このような複雑なラムダ式は、HTML ヘルパーではサポートされていません。これらは、プロパティ アクセスとインデクサー アクセス式のみをサポートします。
もちろん、正しい方法はビューモデルを使用することです。そのため、ドメイン モデルの値に基づいて、必要なテキストが既に含まれているプロパティが作成されます。
例えば:
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")