Ich schreibe einen HTML-Helper für einen Editor. Die Idee besteht darin, Eigenschaften aus dem Model mit Attributen AutoGenerateField zu erhalten und eine Tabelle zu erstellen, wobei jede Zeile einen Namen eines Feldes (auch aus dem Attribut) und eine TextBox oder eine CheckBox enthält, die den tatsächlichen Wert des Feldes enthält.HTMLHelper, Generierung Parameter des Typs "Expression <Func <TModel, TValue >> Ausdruck" aus Eigenschaft
Ich habe ein Problem mit HTMLHelper. Da ich das ganze Modell auf die Helfer und nicht einen Wert senden, kann ich nicht Methoden wie TextBoxFor, da sie Parameter benötigen, wie
"Expression<Func<TModel, TValue>> expression".
ich Reflexion bin mit und ich versuchte stattdessen die Eigenschaft zu schicken, Visual Studio betrachtet dies weiterhin als falsche Verwendung.
public static MvcHtmlString GenerateEditor<TModel>(this HtmlHelper<TModel> htmlHelper)
{
var model = htmlHelper.ViewData.Model;
var result = String.Empty;
//generating container, etc ...
foreach (var property in model.GetType().GetProperties())
{
var attr = property.GetCustomAttributes(typeof (DisplayAttribute), true).FirstOrDefault();
if (attr == null) continue;
var autoGenerate = ((DisplayAttribute)attr).AutoGenerateField;
if(autoGenerate)
{
//here I'm building the html string
//My problem is in the line below:
var r = htmlHelper.TextBoxFor(property);
}
}
return MvcHtmlString.Create(result);
}
Irgendwelche Ideen:
unten Methode für meine Htmlhelper vereinfacht?
Danke! Es hat erfolgreich funktioniert! – Anelook
@Anelook du bist willkommen) – gideon