我知道this question,但原始海报接受了一个不涉及嵌套的解决方案。我肯定希望嵌套部分视图(当然,除非有更好的方法)。是否可以嵌套部分视图?
我有一个页面,可以根据用户在主视图中的操作,加载几个部分视图之一。 (这些视图是部分的,因为我的理解是,如果你想从Ajax调用中加载重要的附加内容,则需要从调用中返回一个PartialViewResult。)几个部分视图有一个公共元素,一个下拉列表,喜欢把它分解成它自己的部分观点。
但这不起作用。我的部分视图都有一个关联的视图模型,这是他们的模型。对于嵌套的局部视图,我想从父视图的视图模型中传递一个单个字段的值,一个可为空的int,作为嵌套局部视图的模型。
但是在运行时,我收到一个错误消息,说我的局部视图需要一个可为空的对象,但是接收到了X,其中X是与父局部视图关联的视图模型的类型。
所以我的问题是双重的:
是筑巢的部分景色根本不允许? (在这种情况下,我希望框架将检查情况并抛出一个错误,如此明确说)。
有没有办法让我想要的效果,一个分解出来的通用界面元素,其他比部分观点?我已经考虑过,但没有尝试过创建编辑模板,因为我相信对部分视图不起作用的东西对于这些不起作用,但我可能是错的。
ETA:我发现我的问题:当你通过对模型中的空值到HtmlHelper.Partial或的RenderPartial,渲染引擎subsitutes的地方,空的呼唤局部视图模型,假设你根本没有通过一个模型。
在我的情况下,这不是真的:我的可空Nulllable < int>是可空的,因为在设置之前它是空的! null在语义上是有意义的!
但这就是我遇到问题的原因。
为了响应您的编辑:您必须将null转换为可空int,例如'(int?)null' – dotjoe 2012-02-24 22:28:54
@dotjoe这会有一个不同的效果比传递一个模型属性或类型为int的变量吗?那恰好有一个空值?因为那正是我所做的。我会认为,如果一个空投给int?会工作,一个已经是int类型的变量?会工作。但事实并非如此。 – 2012-02-25 00:05:24
是的,这也应该工作......它不会比我的答案...怪异。 – dotjoe 2012-02-25 14:30:02