使用MVC 4.5自定义Html助手,如何将自定义元素的id设置为模型的属性。
我创建了两个类:
public class ZClass1
{
public ZClass2 ZClass2 { get; set; }
}
public class ZClass2
{
public string Name { get; set; }
}在我看来模型
@model ZClass1我创建了一个简单的自定义Html助手:
using System;
using System.Web.Mvc;
namespace j6.SalesOrder.Web.Models.Helpers
{
public static class SpanExtensions
{
public static MvcHtmlString Span(this HtmlHelper helper, string id, string text)
{
var tagBuilder = new TagBuilder("span");
tagBuilder.Attributes.Add("id", id);
return new MvcHtmlString(tagBuilder.ToString());
}
}
}因此,在视图中使用Html助手:
@using MyModelPath.Models.Helpers
@Html.Span("MyId","Just some text");它正确地呈现:
<span id="MyId">Just some text</span>但是,我不想对id进行硬编码,我想利用模型的优势,该模型的呈现输出是:
<span id="ZClass2.Name">Just some text</span>任何想法都将不胜感激。
谢谢。
发布于 2013-08-26 08:02:47
有一个新的HtmlHelper.IdFor(.)方法,就用这个.
public static MvcHtmlString Span<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, string text)
{
var tagBuilder = new TagBuilder("span");
var id = helper.IdFor(expression);
tagBuilder.Attributes.Add("id", id.ToString());
return new MvcHtmlString(tagBuilder.ToString());
}用法
@Html.Span(m => m.ZClass2.Name, "Just some text")这不会呈现ZClass1.ZClass 2,而是HtmlHelpers扩展方法中常见的id呈现器。
https://stackoverflow.com/questions/18439326
复制相似问题