在mvc中,String为null或empty不检查空值

时间:2013-05-06 11:13:42

标签: asp.net-mvc-3 isnullorempty

我的数据库中有Industry个类型。如果为null,则显示如下错误:

“可以为空的对象必须有值。”

我希望我的值在空值时显示为空。

这是我的代码:

<p>
    <strong>Industry Type:</strong>
    <%: Model.GetIndustry(Model.IndustryId.Value).Name%>
</p>

有人有想法吗?请帮帮我......

5 个答案:

答案 0 :(得分:0)

检查行业是否先退回,然后写出名称(如果有的话)

<%
  var industry = Model.GetIndustry(Model.IndustryId.Value);
%>

<%: industry == null ? "" : industry.Name %>

IndustryId可以为空吗?然后你可以这样做

<%
    var industry = Model.GetIndustry(Model.IndustryId.GetValueOrDefault(0));
%>

并且在GetIndustry方法中,如果id为零,则可以返回null

public Industry GetIndustry(int id) {
    if (id==0) return null;
    // else do your stuff here and return a valid industry
}

答案 1 :(得分:0)

它类似于“von v”的答案,但我认为“Nullable对象的错误必须有一个值”。可以来自IndustryId,因为它可以为空,所以最好先检查一下:

 <p>
    <strong>Industry Type:</strong>
    <%:if(Model.IndustryId.HasValue)
    {
      var idustry =  Model.GetIndustry(Model.IndustryId.Value);
      if(industry!= null)
        industry.Name
    }
    else
    {
    ""
    }
%>        
</p>

在我看来,这样做很好

Model.GetIndustry()

在后端,与控制器一样,然后通过viewstate返回行业, 比如检查:

string industryName = "";
     if(Industry.IndustryId.HasValue){
    var industry = YourClass.GetIndustry(Industry.IndustryId.Value);
    industryName = industry!= null ? Industry.Name : "" ;
}
ViewBag.IndustryName= industryName;

然后在视图中使用ViewBag:

<p>
    <strong>Industry Type:</strong>
    <%: ViewBag.IndustryName %>
</p>

最好将检查与视图分开并在代码中执行逻辑。

希望它有所帮助。

答案 2 :(得分:0)

字符串可以接受null或空值,为什么不尝试string.IsNullOrEmpty(Model.IndustryId.Value)

这是非常自我解释的。在你的控制器中,

  string yourValue = string.empty;
  yourValue = Model.GetIndustry(Model.IndustryId.Value).Name;

  if(string.IsNullOrEmpty(yourValue))
  {
     //display your result here!
  }

  ViewBag.IndustryValue = yourValue;

答案 3 :(得分:0)

请尝试一下

<p>
    <strong>Industry Type:</strong>
    <%: Model.IndustryId.HasValue ? Model.GetIndustry(Model.IndustryId.Value).Name : string.Empty%>
</p>

答案 4 :(得分:0)

我发现了问题。

 <p>
    <strong>Industry Type:</strong>
    <% if (Model.IndustryId.HasValue)
      { %>
     <%: Model.GetIndustry(Model.IndustryId.Value).Name%>

     <%}
      else
      { %>
     <%:Model.IndustryId==null ? "": Model.GetIndustry(Model.IndustryId.Value).Name %>
     <%} %>
    </p>