2011-03-30 65 views
2

假设我有以下几点:ASP.NET MVC:在详细信息视图删除空场

操作:

public ActionResult Details(int id) 
{ 
    Person person = personRepository.GetPerson(id); 

    return View(person) 
} 

这是我的看法:

Name: <%= Html.Encode(Model.Name) %><br /> 
    Age: <%= Html.Encode(Model.Age) %><br /> 
    Birth Date: <%= Html.Encode(Model.Birthday) %><br /> 
    Country: <%= Html.Encode(Model.Country) %><br /> 
    Weight: <%= Html.Encode(Model.Weight) %><br /> 
    Height: <%= Html.Encode(Model.Height) %><br /> 
    Phone: <%= Html.Encode(Model.PhoneNumber) %> 

我的问题是,国家,重量和身高都可以为空。我怎样才能做这样的事情

foreach (var field in Model) 
     if (var field != null) 
     { 
      field.name + ": " + field.value 
     } 

我能做到这样,但我敢肯定有一个更好的办法:

if (Model.Name != null){ 
      <%= Html.Encode(Model.Name)%> 
     } 

预先感谢您

+0

我的解决方案这个问题是为了确保我的数据库中的可空字段不为空,而是包含空字符串。我相信这违反了各种规则。希望我们能在这里得到一个很好的答案。 – Pete 2011-03-30 19:41:17

+2

我会去看可空查看模型中的国家,重量和高度,以便实体不会改变。我也会考虑使用Html.EditorFor和Html.LabelFor辅助方法。 – WorldIsRound 2011-03-30 19:43:16

+0

@WorldsIsRound感谢与辅助方法一起,似乎在做伎俩 – 2011-03-30 23:15:21

回答

2
Country:<%: string.IsNullOrEmpty(Model.Country) ? String.Empty : Model.Country %>     
<br /> 

记那在<%:%> MVC 2你可以使用它的Html.Encode

+0

公平足够,我会采取它 – 2011-03-30 23:01:10

+0

+1现在有无论如何,使用Http.EditorFor或Http.TextFor等时,自动发生? – Pete 2011-03-31 00:18:15

+0

@Pete没有建立在你可以使你自己的扩展方法来包装这些和检查为空。 – Ryan 2011-03-31 03:07:50