- 我有一個視圖模型叫做
ExampleViewModel
。 - 我有一個控制器叫
ExampleController
- 我有兩個視圖叫
Page1
和Page2
。
這兩個視圖都與ExampleViewModel
強烈類型。如何在多個強類型視圖之間保留對象屬性值?
ExampleViewModel
包含兩個屬性Name
和Age
。
Page1
獲取屬性Name
的數據。Page2
獲取屬性Age
的數據。
當我訪問page1
,我填的文本框爲Name
財產,並觸及「下一步」按鈕,將數據上傳到控制器。
調試時可以看到發佈的數據正常。發送回發佈函數的數據是一個ExampleViewModel
對象。然後我將同一個對象傳入Page2
。
當我然後訪問page2
時,我填寫Age
屬性的文本框並點擊Back
按鈕,該按鈕將數據發佈到控制器。
這裏的問題,當你看看這回發的ExampleViewModel
對象,這是在Page1
設置Name
屬性值失傳,只有Page2
數據提交(Age
屬性)。
如何保留在視圖之間傳遞的同一對象的屬性值?
ExampleViewModel
public class ExampleViewModel
{
public string Name { get; set; }
public int Age { get; set; }
}
ExampleController
public class ExampleController : Controller
{
[HttpPost]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult PostMethod (ExampleViewModel formData, FormCollection form, string command)
{
string newView = "";
string newController = "";
Session["formData"] = formData;
if (command.ToLower() == "back")
{
newView = form["PreviousAction"];
newController = form["PreviousController"];
}
else if (command.ToLower() == "next")
{
newView = form["NextAction"];
newController = form["NextController"];
}
return RedirectToAction(newView, newController);
}
public ActionResult Page1()
{
return GetView();
}
public ActionResult Page2()
{
return GetView();
}
private ViewResult GetView()
{
ExampleViewModel formData = (ExampleViewModel)Session["formData"];
if (formData != null)
{
return View(formData);
}
else
{
return View();
}
}
}
1查看
@model ExampleProject.ViewModels.ExampleViewModel
@using (Html.BeginForm("PostMethod", "Example", FormMethod.Post))
{
@Html.Label("Your name")
@Html.TextBoxFor(m => m.Name)
<input id="ButtonNext" type="submit" name="Command" value="Next" />
@Html.Hidden("nextaction", "page2")
@Html.Hidden("nextcontroller", "example")
}
第2頁查看
@model ExampleProject.ViewModels.ExampleViewModel
@using (Html.BeginForm("PostMethod", "Example", FormMethod.Post))
{
@Html.Label("Age")
@Html.TextBoxFor(m => m.Age)
<input id="ButtonBack" type="submit" name="Command" value="Back" />
@Html.Hidden("previousaction", "page1")
@Html.Hidden("previouscontroller", "example")
}
您的第2頁視圖不會爲'ExampleViewModel'的Name屬性提供輸入 –
歡迎來到無狀態網頁...嘗試隱藏的表單值,會話或數據庫。 – BenjaminPaul