我想把我的
<input type="file" id="image" name="image">就像
@Html.UploadFor(model => model.Image)更好的MVC ..。
我知道我必须创建一个具有Linq表达式功能的助手。
这是怎么做到的?
编辑
这里有一个解决方案:
public static MvcHtmlString UploadFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
var builder = new TagBuilder("input");
builder.MergeAttribute("type", "file");
builder.MergeAttribute("id", HtmlExtensions.IdFor(helper, expression));
builder.MergeAttribute("name", HtmlExtensions.NameFor(helper, expression));
return new MvcHtmlString(builder.ToString(TagRenderMode.SelfClosing));
}
public static class HtmlExtensions
{
public static string NameFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
return htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(ExpressionHelper.GetExpressionText(expression));
}
public static string IdFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
return HtmlHelper.GenerateIdFromName(NameFor(htmlHelper, expression));
}
}发布于 2011-11-18 17:58:35
有关创建自定义Helpers:http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs的参考资料/教程
public static MvcHtmlString UploadFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
// generate your HTML
} https://stackoverflow.com/questions/8186807
复制相似问题