ネストされた HomeAddress および MailAddress モデルを呼び出すメインの RegisterModel があります。
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>
実行時に HomeAddressModel または MailAddressModel のいずれかとバインドできるように、Parital ビューを定義する方法を教えてください。
私のメインの登録ビュー
@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 に対して単一のクラスを使用し、両方の Addresses に対して 2 つの異なるプロパティを使用する必要がありますか? Address home {get;set;} と Address mail{get;set;} のようなもの。はいの場合、次のことを達成する方法。
- Address の部分ビューを作成するには? 別の HomeAddres クラスと MailAddress クラスを使用している両方のシナリオで。または、単一の Address クラスを使用します。
- 上記の両方のアプローチで Main Register View で partialView を宣言する方法。
- [HttpPost] アクション メソッドですべての値を読み取れるようにする方法、つまり RegisterModel 値がバインドされ、個々のアドレスもバインドされます。