如何在剃刀视图编辑器模板中检查空对象

时间:2016-06-23 14:06:08

标签: c# asp.net-mvc asp.net-mvc-4 templates razor

在我的ViewModel中,我创建了一个Object类型的属性,并且从控制器我传递了该对象类型属性的值。现在我已经创建了一个编辑器模板来处理该Object类型。这是我的代码:

   <div class="form-group">
         @Html.EditorFor(x => Model.testProp)
   </div>

基于值类型,此编辑器模板调用不同类型的编辑器模板(String,Date,int)。 现在我如何使用编辑器模板处理null /空字符串?如果我的Model.testProp为null,那么如何调用返回空TextField的编辑器模板?

1 个答案:

答案 0 :(得分:1)

您是否尝试过进行null检查并选择使用哪个模板?

像这样:

<div class="form-group">
     @if (Model.testProp != null)
     {
         // If not null; Use the correct template, based on the type
         @Html.EditorFor(x => x.testProp)
     }
     else
     {
         // Otherwise print an empty text box
         @Html.TextBoxFor(x => x.testProp)
     }
</div>

您还可以在!string.IsNullOrWhiteSpace(Model.testProp)语句中使用if来检查空白string

这样,当testProp null时,会创建<input type="text"...>,并在{{1}时使用正确的字段名称进行匹配某些值返回控制器。

另外,我不知道它是否有任何区别,但我通常会将谓词表达式声明为POST - 我已经在上面的示例中使用了它。

希望这有帮助! :)