【发布时间】:2014-08-07 20:21:36
【问题描述】:
我知道this question,但原发帖人接受了一个不涉及嵌套的解决方案。我肯定想嵌套部分视图(当然,除非有更好的方法。)
我有一个页面可以 Ajax 加载几个部分视图之一,这取决于用户在主视图中的操作。 (这些视图是局部的,因为我的理解是,如果您想从 Ajax 调用中加载重要的附加内容,则需要从调用中返回一个 PartialViewResult。)几个局部视图有一个共同的元素,一个下拉菜单,我会喜欢将其分解成自己的部分观点。
但这不起作用。我的部分视图每个都有一个关联的视图模型,这是它们的模型。对于嵌套局部视图,我想从父视图的视图模型中传递单个字段的值,一个可为空的 int,作为嵌套局部视图的模型。
但在运行时我收到一条错误消息,指出我的局部视图需要 Nullable
所以我的问题是双重的:
是否根本不允许嵌套局部视图? (在这种情况下,我希望框架能够检查情况并抛出一个明确说明的错误。)
除了局部视图之外,有没有办法获得我想要的效果,即分解出来的通用界面元素?我考虑过但没有尝试过创建一个编辑模板,因为我认为对局部视图不起作用的东西对它们不起作用,但我可能错了。
ETA:我发现了我的问题:当您将模型的空值传递给 HtmlHelper.Partial 或 RenderPartial 时,渲染引擎会用调用局部视图的模型代替该空值,假设您根本没有通过一个模型。
在我的情况下这不是真的:我的 Nullable
但这就是我遇到问题的原因。
【问题讨论】:
-
响应您的编辑:您必须将 null 转换为可空的 int,例如
(int?)null -
@dotjoe 这与传递 int 类型的模型属性或变量有不同的效果吗?那恰好有一个空值?因为我就是这么做的。我会认为如果将 null 强制转换为 int?可以工作,一个已经是 int 类型的变量?会工作。但事实并非如此。
-
是的,这也应该有效...这与我的回答没有什么不同...很奇怪。
标签: asp.net-mvc-3 partial-views