我创建了一个简单的方法来扩展 HtmlHelper .. 基本上它是 TextBoxFor 方法,但经过定制以更好地适应我的目的.. 无论如何.. 我认为 HtmlHelper 使用新 { @attributename = "attributevalue" } 的方式创建html元素属性的东西真的很整洁..所以我的问题是..我怎么能做同样的事情?
查看代码:
@Html.DaisyTextBoxFor(model => model.Text, new { @class="asd" })
助手代码:
public static MvcHtmlString DaisyTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IDictionary<string,object> attributes = null)
{
var value = ((PropertyViewModelProperty)htmlHelper.ViewData.Model.GetType().GetProperty(ExpressionHelper.GetExpressionText(expression)).GetValue(htmlHelper.ViewData.Model, null)).Value;
return MvcHtmlString.Create(String.Format("<input name=\"{0}\" value=\"{1}\" />", CreateForInputName(typeof(TModel), htmlHelper), value));
}
private static string CreateForInputName(Type model,HtmlHelper htmlHelper)
{
return HttpContext.Current.Server.HtmlEncode(model.AssemblyQualifiedName + "_" + htmlHelper.ViewData["propertyName"].ToString() + '_' + htmlHelper.ViewData["propertyGuid"].ToString());
}