[英]Custom helpers setting element attributes equal to a model property
使用MVC 4.5自定義Html幫助程序,如何將元素的id自定義設置為模型的屬性。
我創建了兩個類:
public class ZClass1
{
public ZClass2 ZClass2 { get; set; }
}
public class ZClass2
{
public string Name { get; set; }
}
在我的View模型中
@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>
任何想法,將不勝感激。
謝謝。
有一個新的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.ZClass2,而是來自HtmlHelpers擴展方法的常用id呈現器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.