【发布时间】:2016-03-09 14:13:10
【问题描述】:
我有一个简单的模型如下
public class TestModel
{
public string property1 {get;set;}
public string property2 {get;set;}
}
在我的剃刀视图上,我有两个文本框,它们映射到这两个属性。 文本框只有一个是必填字段,另一个可以留空。(即property1或property2可以输入,或者两者都可以输入。但是两者都不能留空)
我的控制器动作方法很简单
public ActionResult MyMethod(TestModel tmodel)
{
//code fails on this null check..object reference not set to instance of object
if (!string.IsNullOrEmpty(tmodel.property1))
{
}
}
如果我对模型的属性执行此操作,则上述语句有效..为什么 null 单独失败?
[DisplayFormat(ConvertEmptyStringToNull = false)]
我不明白为什么 string.IsNullOrEmpty 会失败?
这是视图..
<div class="form-group">
@Html.LabelFor(m => m.property1, new { @class = "col-sm-3 control-label" })
<div class="col-sm-4">
@Html.TextBoxFor(m => m.property1, new { @class = "form-control"})
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.property2, new { @class = "col-sm-3 control-label" })
<div class="col-sm-4">
@Html.TextBoxFor(m => m.property2, new { @class = "form-control" })
</div>
感谢您的意见...
【问题讨论】:
-
你能展示一下视图吗?
-
IsNullOrEmpty 失败,因为您正在检查 tmodel.property1 是否为 null,但它是 tmodel 那是 null
-
失败怎么办?您是否收到错误,
if块内的代码在不应该执行时被执行?您是否收到 NullReferenceException,在这种情况下不是 IsNullOrEmpty 失败? -
我认为它会引发异常
//code fails on this null check..object reference not set to instance of object。发生这种情况是因为模型本身为空。当只有一个属性为空时会发生这种情况吗? -
在 isnullorempty 检查我是否这样做之前,如果(tmodel!=null),那么它通过了..所以它的 string.isnullorempty 失败了......
标签: c# asp.net-mvc asp.net-mvc-4