有沒有一種方法可以使用LabelFor幫助器並自定義標籤文本而不必在模型中使用DisplayNameAttribute?Asp.Net MVC 2 LabelFor自定義文本
回答
我創造了我的項目這個網站助手:
public static class MyLabelExtensions
{
public static MvcHtmlString Label(this HtmlHelper htmlHelper, string forName, string labelText)
{
return Label(htmlHelper, forName, labelText, (object) null);
}
public static MvcHtmlString Label(this HtmlHelper htmlHelper, string forName, string labelText,
object htmlAttributes)
{
return Label(htmlHelper, forName, labelText, new RouteValueDictionary(htmlAttributes));
}
public static MvcHtmlString Label(this HtmlHelper htmlHelper, string forName, string labelText,
IDictionary<string, object> htmlAttributes)
{
var tagBuilder = new TagBuilder("label");
tagBuilder.MergeAttributes(htmlAttributes);
tagBuilder.MergeAttribute("for", forName.Replace(".", tagBuilder.IdAttributeDotReplacement), true);
tagBuilder.SetInnerText(labelText);
return MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.Normal));
}
public static MvcHtmlString LabelFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
string labelText)
{
return LabelFor(htmlHelper, expression, labelText, (object) null);
}
public static MvcHtmlString LabelFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
string labelText, object htmlAttributes)
{
return LabelFor(htmlHelper, expression, labelText, new RouteValueDictionary(htmlAttributes));
}
public static MvcHtmlString LabelFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
string labelText,
IDictionary<string, object> htmlAttributes)
{
string inputName = ExpressionHelper.GetExpressionText(expression);
return htmlHelper.Label(inputName, labelText, htmlAttributes);
}
}
我使用它們以 「強類型」 的資源:
<%= Html.LabelFor(m=>m.NickName, UserStrings.NickName) %>
希望幫助...
爲什麼不創建自己的Html Helper?
public static class MVCHelpers
{
public static string CustomLabelFor(this HtmlHelper helper, string ...)
{
return "<label ... </label>"
}
}
這將是我的最後一招,確保我不會錯過任何東西。看起來很奇怪,我發現自定義文本的唯一方法是使用DisplayNameAttribute。 – 2010-01-18 15:13:39
我發現這非常有用。我認爲這是從MVC 2缺少的東西。或者至少我還沒有找到一種方法來建立它。
最簡單的情況下,需要這個功能。我有兩個對象聯繫人和地址。 A聯繫人可以有多個Addesses
地址
- ID
- 街
- 市
- 國家
聯繫
- ID
- 總線地址ID
- 首頁地址ID
現在對於其編輯或顯示聯繫人,能夠改變DisplayNameAttribute上的地址「街」屬性不是非常有幫助,因爲我真的想要一個形式一個領域是'商業街',另一個領域是'Home Street'。
我同意。我認爲應該有一種方法來覆蓋。 – 2010-03-23 22:21:13
-1:不是答案 – xr280xr 2014-05-19 20:15:08
MVC3 RC中有一個新的LabelFor重載,允許您指定labelText。
是的,我看到了,很高興他們加了這個! – 2010-11-15 16:39:51
- 1. ASP.NET MVC 2自定義視圖引擎
- 2. Asp.Net Mvc 2自定義驗證問題
- 3. ASP.NET MVC 2問題與自定義ModelValidator
- 4. 自定義的ValidationSummary在ASP.NET MVC 2
- 5. asp.net mvc 2自定義服務帳戶
- 6. ASP.NET MVC自定義路由
- 7. 自定義asp.net mvc 3 jquery.validate.unobtrusive
- 8. ASP.NET MVC自定義驗證
- 9. asp.net mvc自定義屬性
- 10. ASP.NET MVC 2:在哪裏把自定義的JS文件?
- 11. ASP.Net MVC3 VB.Net自定義LabelFor HtmlHelper不工作
- 12. ASP.NET MVC自定義的HttpHandler
- 13. ASP.NET MVC EditorFor自定義JavaScript
- 14. asp.net MVC自定義路由
- 15. ASP.NET MVC授權 - 自定義?
- 16. Asp.Net MVC自定義ModelBinder
- 17. ASP.NET MVC - 自定義成員
- 18. ASP.net MVC自定義路由
- 19. ASP.NET MVC自定義授權
- 20. ASP.NET MVC:自定義排序
- 21. 自定義ViewEngine ASP.NET MVC 3
- 22. ASP.NET MVC - 自定義路由
- 23. ASPNET MVC 2 LabelFor前綴過載
- 24. 如何調試自定義ASP.NET MVC文本模板?
- 25. asp.net mvc自定義數據搜索的文本框
- 26. asp.net mvc自定義模型綁定
- 27. Asp.net MVC 3 - 自定義模型綁定
- 28. asp.net mvc自定義模型綁定器
- 29. 自定義佈局,崇高文本2
- 30. 如何在asp.net中自定義Url mvc
我剛剛遇到了這個代碼,並在我的項目中實現了它。但是,在構建HtmlHelper時,我確實得到了一些奇怪的「不一致的可訪問性」消息。我通過將「this HtmlHelper」的每個實例都替換爲「this System.Web.Mvc.HtmlHelper」來解決此問題。希望能幫助其他任何發現這一點的人。 – 2010-10-23 14:30:14