微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc – Asp.Net MVC 5如何将ViewBag发送到部分视图

我有一个_LoginPartial View,想要通过ViewBag向它发送数据,但是我发送数据的Controller没有View.

public PartialViewResult Index()
    {
        ViewBag.sth = // some data
        return PartialView("~/Views/Shared/_LoginPartial.cshtml");
    }

这段代码对我不起作用.

解决方法

看起来你期望在执行以下操作时调用此Index操作:@ Html.Partial(‘_ LoginPartial’).这永远不会发生. Partial只使用当前视图的上下文通过Razor运行局部视图,并吐出生成的HTML.

如果您需要部分的其他信息,可以指定自定义viewDataDictionary:

@Html.Partial("_LoginPartial",new ViewDataDictionary { Foo = "Bar" });

然后您可以在部分通道内访问:

ViewData["Foo"]

您还可以使用子操作,如果使用不需要主视图上下文的局部视图,通常更可取. _LoginPartial似乎是一个很好的候选人,虽然我不确定你是如何使用它的.但具有讽刺意味的是,带有单独身份验证的认MVC项目附带的_LoginPartial视图使用子操作.

基本上,您拥有的代码已经可以使用,您只需要通过使用Html.Action而不是Html.Partial来更改引用它的方式:

@Html.Action("Index")

请注意,您在此处调用操作,现在调用视图.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐