有主調用嵌套的HomeAddress和MailAddress模型的RegisterModel。A強類型局部視圖,它在運行時動態模型綁定到2個不同的模型類
public class RegisterModel
{
Public string FirstName {get; set;}
Public string LastName {get; set;}
Public HomeAddressModel homeAddress {get; set;}
Public MailAddressModel mailAddress {get; set;}
}
public class HomeAddressModel
{
Public string Street1 {get; set;}
Public string Street2 {get; set;}
Public string State {get; set;}
Public string City {get; set;}
}
public class MailAddressModel
{
Public string Street1 {get; set;}
Public string Street2 {get; set;}
Public string State {get; set;}
Public string City {get; set;}
}
局部視圖的地址
@model MyNamespace.Models.???
@{
Layout = "~/Views/_Layout.cshtml";
}
<div id="Address">
//Street1
//Street2
//State
//City
</div>
我將如何定義我Parital觀點,這樣我可以在任何與HomeAddressModel或MailAddressModel運行時綁定。
我的主要註冊查看
@model MyNamespace.Models.RegisterModel
@{
Layout = "~/Views/_Layout.cshtml";
}
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "myForm" }))
{
<div id="form">
@Html.TextBoxFor("FirstName");
@Html.TextBoxFor("LastName");
//Render Partial View for HomeAddress.
//Will provide a checkbox if Mailing Address is different.
//Render Partial View for MailAddress.
</div>
}
public ActionResult Register()
{
var model = new RegsiterModel();
return View(model);
}
[HttpPost]
public ActionResult Register(RegisterModel model,
HomeAddressModel homeAddress,
MailAddressModel mailingAddress)
{
//Do Something with different Addresses
return View();
}
有5個部分對這個問題: -
- 是在RegisterModel類正確創建?這是他們的方式 我們可以嵌套它們嗎?
- 對於兩個地址,我們是否應該爲Address和兩個不同的屬性 單個類? somethign like Address home {get; set;} and Address mail {get; set;}。如果是,那麼如何實現接下來的事情。
- 如何爲地址創建部分視圖?在這兩種情況下,使用單獨的HomeAddres類和MailAddress類的 。或使用單個地址類。
- 如何使用上述方法 在主註冊視圖中聲明partialView。
- 如何確保在[HttpPost]操作方法中,我們可以讀取所有的 值,即RegisterModel值被綁定,並且個別地址 也被綁定。
是否有必要有2個不同的地址模型? – Necros 2013-05-06 16:47:45
@Necros如果我們使用一個類,那麼它會變得更復雜嗎?我嘗試使用一個,但它爲我特別是在[HttpPost] Action方法中弄得更多,我將如何得到2個不同的地址?可能是我不知道如何使用單個Address類實現。 – user2232861 2013-05-06 16:53:42