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")

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

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....