【问题标题】:How do I display and check a Null value in MVC?如何在 MVC 中显示和检查 Null 值?
【发布时间】:2015-05-19 01:04:18
【问题描述】:

我有一个对象,比如 Employee,如下:

 Employee() {
    int id;
    string name;
 }

在我看来,

我现在有

<input type="text" name="employeeName" id="employeeName" readonly="true" value="@Model.Employee.name"/>

但是,在某些情况下,Employee 值将为 null,这会给我一个错误,即 null 引用错误。如果它为空,我应该进行内联检查以返回一个空字符串还是有更好的方法?

@HTML.TextboxFor() 方法在这种情况下会更好吗?

【问题讨论】:

  • 您为什么要手动创建一个带有name="employeeName" 的文本框,它与您的模型没有关系并且不会在回发时绑定(您的模型没有名为employeeName 的属性)?使用@Html.TextBoxFor(m =&gt; m.name, new { readonly = "readonly" })
  • 哦,我只是临时编造了以上内容。但这只是一个例子。
  • 您使用 MVC,因此请充分利用它的功能。始终使用强类型助手绑定到您的模型属性:)
  • 另外一点:您还可以声明式地说明如何显示空值:stackoverflow.com/a/17273132/49251。
  • @DWright, DisplayFormat.NullDisplayText 仅受 @Html.DisplayFor() 尊重(而不是 TextForFor() 或 EditorFor())

标签: c# asp.net-mvc razor


【解决方案1】:

使用Html.TextBoxFor 可以解决这个问题,是的:

@Html.TextBoxFor(i => i.Employee.Name)

这不会导致 null 问题。您还可以将您的方法与空检查一起使用,因此您的假设是正确的:

<input type="text" name="employeeName" id="employeeName" readonly="true" 
  value="@(Model.Employee != null ? Model.Employee.name : "")"/>

这是因为您直接使用对象,而 TextBoxFor 计算表达式树并适当地处理空值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-27
    • 2011-08-25
    • 2022-09-23
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多