首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更新ASP.NET MVC Helper中的标签文本

更新ASP.NET MVC Helper中的标签文本
EN

Stack Overflow用户
提问于 2015-02-04 18:34:49
回答 2查看 2.2K关注 0票数 0

我有一个ASP.NET MVC应用程序。我在Html助手的帮助下呈现视图。例如,我的.cshtml文件如下所示:

代码语言:javascript
运行
复制
<div>
  @Html.Label(model => model.Price)
  @Html.TextPrice(model => model.Price)
</div>

帮助程序的定义类似于Extensions.cs中的以下内容:

代码语言:javascript
运行
复制
public static MvcHtmlString Label<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, string classes = "control-label")
{
  var attr = new Dictionary<string, object>();
  attr .Add("class", classes);

  return System.Web.Mvc.Html.LabelExtensions.LabelFor(html, expression, attr);
}

public static MvcHtmlString TextPrice<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, byte decimalPlaces = 2, string classes = "form-control")
{
  return Text(html, expression, classes + " decimal-" + decimalPlaces.ToString());
}

最后,我想把标签翻译成其他语言。现在,我需要做一个中间翻译。我的问题是,当我打印一个标签,我如何抓取文本,改变它,然后使用新的文本为标签?此时,我不想在我的模型上添加一些显示属性。我只需要做一个快速和肮脏的搜索和替换在我的标签扩展方法。然而,我只是不知道如何抓取文本和更新它。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-04 18:41:46

您可以自己从表达式中获取属性名,然后将转换作为labelText参数的参数传递给LabelExtensions.LabelFor()

代码语言:javascript
运行
复制
public static MvcHtmlString Label<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, string classes = "control-label")
{
    var attr = new Dictionary<string, object>();
    attr .Add("class", classes);

    string propertyName = ((MemberExpression)expression.Body).Member.Name;
    string labelText = translate(propertyName);

    return System.Web.Mvc.Html.LabelExtensions.LabelFor(html, expression, labelText, attr);
}
票数 1
EN

Stack Overflow用户

发布于 2015-02-04 19:05:38

您可以在模型中使用DisplayName属性。例如:

代码语言:javascript
运行
复制
 [Display(Name="Character_FirstName", ResourceType=typeof(ClassLib1.Resources))]
 public string FirstName {get; set;}

例如:http://haacked.com/archive/2011/07/14/model-metadata-and-validation-localization-using-conventions.aspx/https://stackoverflow.com/a/3877154/2298807 (与DisplayNameAttribute定位相关)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28328828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档