簡體   English   中英

將viewbag從動作控制器傳遞到局部視圖

[英]Pass viewbag to partial view from action controller

我有一個部分視圖的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獲取數據的正確方法是什么。 我想我正在遵循錯誤的方法。 請指導我。

你可以按照下面的說法使用它:

在您的視圖中:

@Html.Partial("[ViewName]", (string)ViewBag.Message)

而你的部分觀點:

@model String

<b>@Model</b>

如上所示,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"]

“子操作遵循與父操作不同的控制器/模型/視圖生命周期。因此,它們不共享ViewData / ViewBag。”

答案提供了另一種傳遞數據的方法。

子動作是否與其“父母”動作共享相同的ViewBag?

老問題,但如果有人在這里找到這個問題的解決方案..

您可以使用viewdatadictionary將viewbag值傳遞給partial。

在你看來:

@Html.Partial("_Partial", "", new ViewDataDictionary { { "permalink", ViewBag.Permalink } })

在部分視圖中使用它像這樣:

ViewData["permalink"]

您可以嘗試此操作,以便將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
return PartialView("partialviewname", obj);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM