我有一个_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")