2012-11-16 129 views
0

我试图评估一个模型的属性,以在尝试呈现HiddenFor HTML元素之前查看它是否为空,但是输入了if语句的代码块,即使语句是假。如果没有正确评估语句

@{ 
if(Model.BoatImage.UploadedImagePath != string.Empty) 
{ 
    @Html.HiddenFor(model => model.BoatImage.UploadedImagePath) 
} 
} 

在上面的代码,UploadedImagePath在BoatImage的构造初始化为的String.Empty。如果我在if语句中断,Intellisense会显示UploadedImagePath为空,并且Immediate窗口将if语句评估为false。但是,该程序仍尝试呈现HiddenFor元素。

编辑:调试器错误地指出,上面的代码导致异常,实际上是上面的代码下面几行。一旦我纠正了导致问题的行,上面的代码正常工作。

+1

从不检查这样空字符串。改用string.IsNullOrEmpty()。 –

+0

你的意思是“该程序仍然试图呈现隐藏的”?呈现的html如何看起来像? – nemesv

回答

1

的剃须刀,你应该这样写:

@if(!string.IsNullOrEmpty(Model.BoatImage.UploadedImagePath)) 
{ 
    @Html.HiddenFor(model => model.BoatImage.UploadedImagePath) 
} 

请注意,我也改变了你的字符串评估方法

+0

感谢您的回复。但是,在更改代码后,if语句仍然被错误地评估。 – Auc

+0

然后有一些不正确的东西。发布请在发布时提供UploadedImagePath值的截图。 – Dmitry