如何在返回Partial视图时传递ViewDataDictionary
解决方法
你可以通过两种方式将ViewData传递给分部视图:
方法1:使用带ViewData参数的Partial重载
直接调用Partial方法的三参数重载,把当前的ViewData作为第三个参数传入即可:
public IActionResult OnGetAddObjective(string newObjective) { ViewData["MyTestData"] = "hi"; return Partial("_ObjectiveRow", new ObjectiveViewModel { ObjectiveText = newObjective }, ViewData); }
方法2:手动创建PartialViewResult
如果需要更灵活的配置,也可以手动实例化PartialViewResult,并为它的ViewData属性赋值:
public IActionResult OnGetAddObjective(string newObjective) { ViewData["MyTestData"] = "hi"; return new PartialViewResult { ViewName = "_ObjectiveRow", Model = new ObjectiveViewModel { ObjectiveText = newObjective }, ViewData = ViewData }; }
补充说明
主页面直接调用分部视图时,Razor会自动将主页面的ViewData传递给分部,这是因为渲染上下文是连续的。但通过后台Action返回分部视图时,属于独立的响应输出,默认不会自动携带当前的ViewData,所以必须显式传递。
内容的提问来源于stack exchange,提问作者user568551
相关产品推荐
相关产品推荐

