加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在ASP.NET MVC中保护NullReferenceExceptions的

发布时间:2020-12-16 03:20:05 所属栏目:asp.Net 来源:网络整理
导读:UPDATE 问题是语法问题. @awrigley显示了在Razor中编写它的正确方法. 以下作品: @if(Model.Thing.Prop != null){ Html.RenderPartial("SomePartialView",Model.Thing.Prop);} 您需要将给定条形图的前1个Foo的详细信息显示为HTML表格.如果Foo为空,如何隐藏空
UPDATE
问题是语法问题. @awrigley显示了在Razor中编写它的正确方法.

以下作品:

@if(Model.Thing.Prop != null)
{
    Html.RenderPartial("SomePartialView",Model.Thing.Prop);
}

您需要将给定条形图的前1个Foo的详细信息显示为HTML表格.如果Foo为空,如何隐藏空表或显示“未找到”消息?

例如.我在下一行得到NullReferenceException,因为Model.Thing.Prop为null;

@{Html.RenderPartial("SomePartialView",Model.Thing.Prop);}

故意为null,我的Repository返回null而不是空的Foo.但是这点稍微偏袒一点,即给定一个null Model.Thing.Prop,我不想调用Html.RenderPartial.

更新
我试过以下没有运气:

@if(Model.Thing.Prop != null)
{
    @{Html.RenderPartial("SomePartialView",Model.Thing.Prop);}
}

这导致Visual Studio告诉我它期待一个;在第1栏第1栏也是如此;是第1行第1列的无效表达式(我猜这是由于MVC3的预发布状态),如果我在浏览器中点击页面,我会得到

CS1501: No overload for method ‘Write’ takes 0 arguments

突出显示@ Html.RenderPartial行.

我也试过了

@if(Model.Thing.Prop != null)
{
    <text>
    @{Html.RenderPartial("SomePartialView",Model.Thing.Prop);}
    </text>
}

但这会导致我的部分视图中出现NullReferenceException,这似乎不正确. Model.Thing绝对是一个有效的Bar和Model.Thing.Prop绝对是一个null Foo.

解决方法

我认为你不想用……

@if (Model.Thing.Prop != null)
{Html.RenderPartial("SomePartialView",Model.Thing.Prop);}

…因为你还想呈现部分视图的一部分?

不好了.已正确阅读您的帖子.

我不知道为什么上面的代码不适合你.

编辑:

请记住,在Razor中,@可以使用两种方式:

>执行声明:

@ {
????我的声明;
}
>评估HtmlHelper,类方法,属性或变量,它返回某种形式或其他形式的字符串(例如,HtmlString,MvcHtmlString或string).例如:

@ MyClass.MyStringProperty

注意,在情况2中,不需要终止半结肠.

1和2表示如果你有一个htmlhelper返回一个字符串以外的东西(例如,void),那么你必须按如下方式调用它:

@{Html.MyHelperThatReturnsVoid;}

使用返回字符串或HtmlString或MvcHtmlString的HtmlHelper,您可以简单地写:

@Html.MyHelperThatReturnsAString

有关详细信息,请参阅我提出的问题的已接受答案:

Custom HtmlHelper that returns void problem

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读