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

asp.net-mvc-3 – 是否可以嵌套部分视图?

发布时间:2020-12-16 06:24:12 所属栏目:asp.Net 来源:网络整理
导读:我知道 this question,但原始海报接受了一个不涉及嵌套的解决方案.我绝对想要嵌套部分视图(当然,除非有更好的方法.) 我有一个页面,可以Ajax加载几个部分视图之一,具体取决于用户在主视图中的操作. (视图是部分的,因为我的理解是,如果你想从Ajax调用中加载重
我知道 this question,但原始海报接受了一个不涉及嵌套的解决方案.我绝对想要嵌套部分视图(当然,除非有更好的方法.)

我有一个页面,可以Ajax加载几个部分视图之一,具体取决于用户在主视图中的操作. (视图是部分的,因为我的理解是,如果你想从Ajax调用中加载重要的附加内容,你需要从你的调用返回一个PartialViewResult.)几个部分视图有一个共同的元素,一个下拉列表,我想喜欢将其纳入自己的局部视野.

但这不起作用.我的部分视图每个都有一个关联的视图模型,这是他们的模型.对于嵌套的局部视图,我想从父视图的视图模型中传递单个字段(可为空的int)的值作为嵌套的局部视图的模型.

但是在运行时我得到一个错误,说我的部分视图需要Nullable< int>但收到X,其中X是与父部分视图关联的视图模型的类型.

所以我的问题是双重的:

>是不允许嵌套部分视图? (在这种情况下,我希望框架会检查情况并抛出一个明确说明的错误.)
>除了部分视图之外,有没有办法获得我想要的效果,一个分解出来的公共界面元素?我已经考虑过,但没有尝试过,创建一个编辑模板,因为我认为对于那些不适用于部分视图的东西不适用于那些,但我可能是错的.

ETA:我发现了我的问题:当你将模型的空值传递给HtmlHelper.Partial或RenderPartial时,渲染引擎会替代调用局部视图的模型来代替那个null,假设你只是没有传递模型.

在我的情况下,这不是真的:我的Nullable< int>是Nullable,因为在它设置之前,它是空的! null在语义上是有意义的!

但这就是我遇到问题的原因.

解决方法

是的,您可以嵌套部分视图.只要确保传递正确的模型. HtmlHelpers在这里非常有用,因为您可以使用完整视图路径封装对RenderPartial的调用,并确保使用正确的模型.

public static void RenderSomePartial(this HtmlHelper helper,int? i)
{
    helper.RenderPartial("~/Views/Shared/SomePartial.cshtml",i);
}

(编辑:李大同)

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

    推荐文章
      热点阅读