Ich versuche, einen benutzerdefinierten Helfer für EditorFor zu erstellen. Ich möchte die String-Längen von den Modellen nehmen und diese zu den HTML-Attributen hinzufügen.MVC EditorFor Custom Helper
Ich habe bisher Folgendes, aber dies gilt nicht die neuen Attribute, die hinzugefügt werden.
public static IHtmlString MyEditorFor<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression, object ViewData, bool disabled = false, bool visible = true)
{
var member = expression.Body as MemberExpression;
var stringLength = member.Member.GetCustomAttributes(typeof(StringLengthAttribute), false).FirstOrDefault() as StringLengthAttribute;
RouteValueDictionary viewData = HtmlHelper.AnonymousObjectToHtmlAttributes(ViewData);
RouteValueDictionary htmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(viewData["htmlAttributes"]);
if (stringLength != null)
{
htmlAttributes.Add("maxlength", stringLength.MaximumLength);
}
return htmlHelper.EditorFor(expression, ViewData);
}
'Rückkehr htmlHelper.EditorFor (Ausdruck, ViewData) 'fügt keine Attribute hinzu. Es verwendet nur das ursprüngliche "ViewData" -Attribut, das Sie an die Methode –
übergeben haben. Wie kann ich das bearbeiten und die Attribute zurückgeben? Ich kann das neue viewData-Objekt nicht zurückgeben, da es ein anderer Typ ist – user3208483