cp1*_*100 17 c# asp.net-mvc asp.net-mvc-partialview razor asp.net-mvc-4
我有一个部分视图的mvc视图.控制器中有一个ActionResult方法,它将返回一个PartialView.所以,我需要将ViewRag数据从ActionResult方法传递给Partial View.
这是我的控制器
public class PropertyController : BaseController
{
public ActionResult Index()
{
return View();
}
public ActionResult Step1()
{
ViewBag.Hello = "Hello";
return PartialView();
}
}
Run Code Online (Sandbox Code Playgroud)
在Index.cshtml视图中
@Html.Partial("Step1")
Run Code Online (Sandbox Code Playgroud)
Step1.cshtml局部视图
@ViewBag.Hello
Run Code Online (Sandbox Code Playgroud)
但这不起作用.那么,从viewbag获取数据的正确方法是什么.我想我正在遵循错误的方法.请指导我.
Spi*_*ode 13
你可以按照下面的说法使用它:
在您的视图中:
@Html.Partial("[ViewName]", (string)ViewBag.Message)
Run Code Online (Sandbox Code Playgroud)
而你的部分观点:
@model String
<b>@Model</b>
Run Code Online (Sandbox Code Playgroud)
如上所示,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();
}
}
Run Code Online (Sandbox Code Playgroud)
在Index.cshtml视图中
@Html.Partial("Step1")
Run Code Online (Sandbox Code Playgroud)
Step1.cshtml局部视图
@TempData["Hello"]
Run Code Online (Sandbox Code Playgroud)
"子操作遵循与父操作不同的控制器/模型/视图生命周期.因此,它们不共享ViewData/ViewBag."
答案提供了另一种传递数据的方法.
小智 6
旧问题,但是否有人在此问题上找到解决方案。
您可以使用viewdatadictionary将viewbag值传递给partial。
您认为:
@Html.Partial("_Partial", "", new ViewDataDictionary { { "permalink", ViewBag.Permalink } })
Run Code Online (Sandbox Code Playgroud)
并在局部视图中使用它,如下所示:
ViewData["permalink"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56242 次 |
| 最近记录: |