HTML 助手不支持这种复杂的 lambda 表达式。它们仅支持属性访问和索引器访问表达式。
正确的方法当然是使用视图模型。因此,您将拥有一个已包含基于域模型值所需文本的属性。
例如:
public class MyViewModel
{
public string MaxNumberOfExtensions { get; set; }
}
然后在您的控制器操作中呈现此视图:
public ActionResult SomeAction()
{
SomeDomainModel model = ...
MyViewModel viewModel = new MyViewModel();
viewModel.MaxNumberOfExtensions = model.MaxNumberOfExtensions == "0" ? "Unlimited" : model.MaxNumberOfExtensions;
return View(viewModel);
}
然后在视图中:
@model MyViewModel
...
@Html.TextBoxFor(x => x.MaxNumberOfExtensions, new { required = "required", id = "maxNumberOfExtensions" })
或者,如果您的应用程序当前没有遵循最佳实践(不使用视图模型),您可以编写一个自定义模板来执行此任务。
例如,在 中添加以下模板~/Views/Shared/EditorTemplates/FormattedNumberOfExtensions.cshtml
:
@model string
@{
var value = Model == "0" ? "Unlimited" : Model;
}
@Html.TextBox("", value, new { required = "required", id = "maxNumberOfExtensions" })
然后在你看来:
@Html.EditorFor(x => x.MaxNumberOfExtensions, "FormattedNumberOfExtensions")