您在操作方法上設置的ViewBag數據只能用於您正在使用的即時視圖。當您將它發回服務器時,除非將它保存在表單內的隱藏變量中,否則它將不可用。這意味着,你改變你的ViewBag數據的HttpPost操作方法後,你可以看到,在視圖中,您正在返回
public ActionResult Create()
{
ViewBag.Message = "From GET";
return View();
}
[HttpPost]
public ActionResult Create(string someParamName)
{
ViewBag.Message = ViewBag.Message + "- Totally new value";
return View();
}
假設你的觀點是打印ViewBag數據
<h2>@ViewBag.Message</h2>
@using(Html.BeginForm())
{
<input type="submit" />
}
結果將是
爲了您的GET Aciton,這將打印「From GET
」
用戶後提交年代的形式,將打印「Totally new value
「;
如果您希望發佈之前的視圖包數據,請將其保存在隱藏的表單字段中。
<h2>@ViewBag.Message</h2>
@using(Html.BeginForm())
{
<input type="hidden" value="@ViewBag.Message" name="Message" />
<input type="submit" />
}
而你的行動方式,我們將接受隱藏字段的值以及
[HttpPost]
public ActionResult Create(string someParamName,string Message)
{
ViewBag.Message = ViewBag.Message + "- Totally new value";
return View();
}
結果將是
爲了您的GET Aciton,這將打印 「From GET
」
用戶提交表格後,會打印「From GET-Totally new value
」;
儘量避免像ViewBag/ViewData這樣的動態內容在動作方法和視圖之間傳輸數據。您應該使用強類型視圖和視圖模型模型。
它會改變。 – Icet
值將在視圖中變化 –
調試並檢查自己 – Imad