【发布时间】:2013-02-14 12:06:25
【问题描述】:
我正在尝试在我的示例 MVC 项目中创建自定义 Html 助手。
这是我到目前为止所做的:
public static MvcHtmlString ImageFor<TModel,TValue>(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel,TValue>> expression,
string alternateText,
object htmlAttributes)
{
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
string name = ExpressionHelper.GetExpressionText(expression);
TagBuilder tagBuilder = new TagBuilder("img");
tagBuilder.MergeAttribute("src", metadata.Model.ToString());
tagBuilder.MergeAttribute("alt", alternateText);
tagBuilder.MergeAttribute("name", name);
return MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.SelfClosing));
}
在我的控制器中,我将图像路径传递给属性(imgUrl)。
当我尝试为其创建标签时,它不会在浏览器上给我image,而是始终显示替代文本。
这是它的渲染标记。
<img name="imageUrl" alt="alernate" src="C:\Users\Administrator\Desktop\down.png"/>
虽然我已经为 @Html.Image 完成了松散类型的帮助程序,但它工作得很好!。
我的代码出了什么问题。
我搜索了很多关于创建 Strongly Typed Helpers 的内容,但没有一个教程向我解释当我们访问强类型帮助器时发生了什么。
我也在 SO 中看到过帖子,当有人发布有关帮助程序的代码时,它只是一段代码,没有任何解释。
如果有人有创建强类型自定义助手的教程,请分享链接。
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 html-helper