如何在剃刀视图中检查模型字符串属性是不是为空

Posted

技术标签:

【中文标题】如何在剃刀视图中检查模型字符串属性是不是为空【英文标题】:How to check model string property for null in a razor view如何在剃刀视图中检查模型字符串属性是否为空 【发布时间】:2013-12-22 21:35:20 【问题描述】:

我正在开发一个ASP.NET MVC 4 应用程序。我首先使用 EF 5 和代码,并在我的一个实体中使用:

public string ImageName  get; set; 
public string ImageGUIDName  get; set; 

这两个属性是我实体的一部分。由于我可能没有上传图像,因此这些值可以为空,但是当我渲染通过模型的视图时,ImageNameImageGUIDName 从数据库中以null 出现,我得到了这个:

Exception Details: System.ArgumentNullException: Value cannot be null.

基本思路是根据有无图片为用户提供不同的文字:

            @if (Model.ImageName != null)
            
                <label for="Image">Change picture</label>
            
            else
             
                <label for="Image">Add picture</label>
            

所以当上面的代码让我遇到错误时,我尝试使用string.IsNullOrEmpty(Model.ImageName)Model.ImageName.DefaultIfEmpty() != null,但我得到了完全相同的错误。看来我不能只将 y 实体属性设置为可为空:

public string? ImageName  get; set;  //Not working as it seems

那么我该如何处理呢?

【问题讨论】:

也许你的 Model 是 null 而不是 ImageName 属性 在这种情况下,我很确定。 @naspinski 的回答也很好。这只是你检查null的方式,在这种情况下你似乎不能如你所愿。 最佳实践是使用 String.IsNullOrWhiteSpace(Model.ImageName) 【参考方案1】:

先试试这个,你可能会传递一个空模型:

@if (Model != null && !String.IsNullOrEmpty(Model.ImageName))

    <label for="Image">Change picture</label>

else
 
    <label for="Image">Add picture</label>

另外,你可以用一些ternary fun! 让它更整洁——但如果你的模型是空的,那仍然会出错。

<label for="Image">@(String.IsNullOrEmpty(Model.ImageName) ? "Add" : "Change") picture</label>

【讨论】:

是的,刚刚尝试过 - 三元正在工作。我确定模型。我正在密切关注我的SQL Server Management studio,并且我之前使用过此记录,并且偶然将列设置为空。如果不是这样,我什至可能在没有通知的情况下就放手了,这会出现一些问题。感谢您的帮助。

以上是关于如何在剃刀视图中检查模型字符串属性是不是为空的主要内容,如果未能解决你的问题,请参考以下文章

如何检查@RequestMapping 参数中的请求参数是不是为空字符串?

在剃刀视图引擎中转义@字符

如何检查字符串是不是为空?

如何检查 django 表单数据是不是为 ​​None、''(空字符串)或 False

使用 MVC Razor 语法检查视图模型属性在 Javascript 中是不是具有值

onChange 检查对象的所有属性是不是存在且不是未定义或空字符串