我知道这个问题,但原帖作者接受的解决方案不涉及嵌套。除非有更好的方法,否则我肯定想要嵌套部分视图。
我有一个页面,可以根据用户在主视图中的操作Ajax加载多个部分视图。(视图是部分视图,因为我的理解是,如果您想从Ajax调用中加载大量附加内容,则需要从调用返回PartialViewResult。)多个部分视图具有一个共同元素,即下拉菜单,我想将其拆分为自己的部分视图。
但这并没有起作用。我的每个部分视图都有一个关联的视图模型,就是它们的模型。对于嵌套的部分视图,我希望将父视图的视图模型的单个字段(可空int类型)的值传递给嵌套的部分视图作为其模型。
但在运行时,我收到一个错误,说我的部分视图需要一个Nullable<int>,但接收到的是X,其中X是与父部分视图关联的视图模型的类型。
所以我的问题有两个方面:
嵌套部分视图是否被禁止?(如果是这样,我希望框架能够检查这种情况并抛出明确说明的错误。)
是否有一种方法可以实现我想要的效果,即一个因素化的公共接口元素,而不是使用部分视图?我考虑过,但没有尝试创建一个编辑模板,因为我认为对于部分视图不起作用的东西对于那些也不起作用,但我可能是错的。
ETA: 我找到了我的问题:当您将模型的空值传递给HtmlHelper.Partial或RenderPartial时,渲染引擎会将调用部分视图的模型替换为空值,假设您只是没有传递模型。
在我的情况下,这不是真的:我的Nullable<int>是可空的,因为在设置之前它是null!null在语义上是有意义的!
但这就是我遇到问题的原因。
(int?)null
。 - dotjoe