将viewbag从动作控制器传递到局部视图
我有一个部分视图的mvc视图。控制器中有一个ActionResult方法,它将返回一个PartialView。 所以,我需要将ViewRag数据从ActionResult方法传递给Partial View。
这是我的控制器
public class PropertyController : BaseController { public ActionResult Index() { return View(); } public ActionResult Step1() { ViewBag.Hello = "Hello"; return PartialView(); } }
在Index.cshtml视图中
@Html.Partial("Step1")
Step1.cshtml局部视图
@ViewBag.Hello
但这不起作用。 那么,从viewbag获取数据的正确方法是什么。 我想我正在遵循错误的方法。 请指导我。
“子操作遵循与父操作不同的控制器/模型/视图生命周期。因此,它们不共享ViewData / ViewBag。”
答案提供了另一种传递数据的方法。
子动作是否与其“父母”动作共享相同的ViewBag?
你可以按照下面的说法使用它:
在您的视图中:
@Html.Partial("[ViewName]", (string)ViewBag.Message)
而你的部分观点:
@model String @Model
如上所示,ViewBag.Message将传递给局部视图。 在部分视图中,您可以将其用作@Model 。
注意:这里ViewBag.Message的类型是字符串 。 你可以传递任何类型。
如果您不必使用ViewBag,则可以使用TempData。 TempData是整个执行链共享的。
public class PropertyController : BaseController { public ActionResult Index() { return View(); } public ActionResult Step1() { TempData["Hello"] = "Hello"; return PartialView(); } }
在Index.cshtml视图中
@Html.Partial("Step1")
Step1.cshtml局部视图
@TempData["Hello"]
您可以尝试此操作,以便将ViewBag传递给操作中的部分视图:
你的控制器:
public class PropertyController : Controller { public ActionResult Index() { return View(); } public ActionResult Step1() { ViewBag.Hello = "Hello"; return PartialView("_Partial1", ViewBag.Hello); } }
你的观点(Index.cshtml):
@Html.Action("Step1")
你的部分视图(_Partial1.cshtml):
@ViewBag.Hello
老问题,但如果有人在这里找到这个问题的解决方案..
您可以使用viewdatadictionary将viewbag值传递给partial。
在你看来:
@Html.Partial("_Partial", "", new ViewDataDictionary { { "permalink", ViewBag.Permalink } })
在局部视图中使用它像这样:
ViewData["permalink"]
return PartialView("partialviewname", obj);
- 可以在Asp.Net Web Api路由中使用句点吗?
- 获取“尝试使用WebAPI时未找到与名为’SampleSlashBaseService’的控制器匹配的类型”
- 如何修改Web API应用程序的默认允许响应大小设置?
- MVCvalidation仅在字符串字段上使RegularExpression成为数字
- 在asp.net-mvc中,使用Base ViewModel在Site.Master页面上显示动态内容的最佳方法是什么
- 在asp.net mvc中一次更新多个记录
- ASP.NET MVC中<%#和<%=有什么区别?
- 在Visual Studio 2013中使用EF6的MySQL连接器
- MVC4 webapi中的反序列化/模型绑定不适用于数组