Gre*_*g B 5 asp.net-mvc renderpartial nullreferenceexception razor asp.net-mvc-3
更新 问题是语法问题.@awrigley显示了在Razor中编写它的正确方法.
以下作品:
@if(Model.Thing.Prop != null)
{
Html.RenderPartial("SomePartialView", Model.Thing.Prop);
}
Run Code Online (Sandbox Code Playgroud)
您需要显示作为HTML表格Foo的给定顶部1的详细信息Bar.如果为空,如何隐藏空表或显示"未找到"消息Foo?
例如.我正在接受NullReferenceException以下一行,因为Model.Thing.Prop是null;
@{Html.RenderPartial("SomePartialView", Model.Thing.Prop);}
Run Code Online (Sandbox Code Playgroud)
故意为null,我的Repository返回null而不是null Foo.但这有点撇开,即给定一个null Model.Thing.Prop,我不想打电话给Html.RenderPartial.
更新
我尝试了以下没有运气:
@if(Model.Thing.Prop != null)
{
@{Html.RenderPartial("SomePartialView", Model.Thing.Prop);}
}
Run Code Online (Sandbox Code Playgroud)
这导致Visual Studio告诉我它预期;第1行第1列也是第1行第1列;的无效表达式(我猜这是由于MVC3的预发布状态),如果我在我得到的浏览器中点击页面
CS1501:方法'Write'没有重载需要0个参数
@Html.RenderPartial突出显示该行.
我也试过了
@if(Model.Thing.Prop != null)
{
<text>
@{Html.RenderPartial("SomePartialView", Model.Thing.Prop);}
</text>
}
Run Code Online (Sandbox Code Playgroud)
但这会导致NullReferenceException我的部分视图中出现一个似乎不对的内容.Model.Thing绝对是有效的Bar,Model.Thing.Prop绝对是一个null Foo.
我猜你不想用...
@if (Model.Thing.Prop != null)
{Html.RenderPartial("SomePartialView", Model.Thing.Prop);}
Run Code Online (Sandbox Code Playgroud)
...因为您仍然想渲染部分视图的一部分?
不好了。已正确阅读您的帖子。
我不知道为什么上面的代码不适合你。
请记住,在 Razor 中,@ 可以通过两种方式使用:
执行语句:
@{ 我的声明; }
评估 HtmlHelper、返回某种形式或其他形式的字符串(例如,HtmlString、MvcHtmlString 或字符串)的类方法、属性或变量。例如:
@MyClass.MyStringProperty
请注意,在情况 2 中,不需要终止分号。
1 和 2 表明如果您有一个 htmlhelper 返回字符串以外的内容(例如 void),那么您必须按如下方式调用它:
@{Html.MyHelperThatReturnsVoid;}
Run Code Online (Sandbox Code Playgroud)
而对于返回字符串或 HtmlString 或 MvcHtmlString 的 HtmlHelper,您可以简单地编写:
@Html.MyHelperThatReturnsAString
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅我提出的问题的已接受答案:
| 归档时间: |
|
| 查看次数: |
2360 次 |
| 最近记录: |