【问题标题】:Get MVC form field name with Html.FieldNameFor() defined by Orchard CMS使用 Orchard CMS 定义的 Html.FieldNameFor() 获取 MVC 表单字段名称
【发布时间】:2015-02-18 10:29:02
【问题描述】:

我想根据 Html.FieldNameFor() 生成表单字段名称,但我不确定这是否适用于我的视图模型。 ViewModel 看起来像

public class FieldsModel
{
  public string Caption { get; set; }
}

public class FormModel
{
  public FieldsModel Fields { get; set; }
}

public class ViewModel
{
  public FormModel Form { get; set; }
}

我如何编写 Linq lamda 表达式以便 Razor 理解它?

显然是这样的

@Html.FieldNameFor(model.Form.Fields => Caption) 

不起作用。

更新: 需要明确的是,我需要从该函数调用中获取Caption

【问题讨论】:

  • 你为什么不试试下面的。
  • 我从来没有听说过@Html.FieldNameFor() 这是你自定义的html帮助方法吗?
  • @Aravindan 我不需要尝试(尽管我拼命尝试),因为它不是有效的 lamda 表达式。
  • @Kartikeya 哦,天哪,这是 Orchard CMS 在 Orchard.Mvc.Html 中定义的 HtmlHelper 的扩展方法。我认为这是标准的 MVC,我的错。
  • @Html.DisplayNameFor(model => model.Form.Fields.Caption)代替@Html.FieldNameFor(model => model.Form.Fields.Caption)

标签: c# asp.net-mvc linq razor orchardcms


【解决方案1】:

请尝试如下。

@Html.DisplayNameFor(model.Form.Fields.Caption) 

它将准确地给出字段名称。

【讨论】:

  • 不,首先你需要写@Html.LabelFor(model => model.Form.Fields.Caption) 否则Razor 不会理解它然后它返回<label for="Form_Fields_Caption">Caption</label>。我只需要字段名称Caption
  • 在上面的代码中,我使用了 ID,请试一试,我测试它运行良好。收到后通知。
  • Html.IdFor<>()Html.Id() 的模板化版本,它根据视图使用的模型返回 ID,它是 ViewModel 而不是 FieldsModel,因此 ID 是 Form_Fields_Caption Caption.
猜你喜欢
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
相关资源
最近更新 更多