내 모델은 간단합니다. 한 클라이언트가 여러 전화 번호를 가질 수 있습니다.
나는 이것을 Entity Framework에서 표현했습니다.
생성 된 클라이언트 클래스는 다음과 같습니다.
public partial class Client
{
public Client()
{
this.PhoneNumbers = new HashSet<PhoneNumber>();
}
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<PhoneNumber> PhoneNumbers { get; set; }
}
이제 "클라이언트 만들기"를위한보기 페이지를 만들어야합니다. 이 페이지에는 전화 번호도 입력 할 수있는 공간이 있어야합니다 (예 : 기본적으로 전화 번호를 입력하려면 두 개의 텍스트 상자가 있어야 함)
<fieldset>
<legend>Client</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
위의 "Create view"와 같이 "model.Name"은 간단한 속성이기 때문에 쉽게 공간을 제공 할 수 있습니다. 하지만 전화 번호 수집을 위해 어떻게 비슷한 일을 할 수 있습니까 .. ??
추악한 자바 스크립트 코드로 이것을 달성 할 수 있다는 것을 알고 있지만, ASP.NET MVC와 함께 사용할 수있는 가장 쉽고 간단한 방법을 알고 싶습니다.
몇 가지를 수행해야합니다.
먼저 ViewModel
필요한 속성을 가진 을 만듭니다 .
public class ClientViewModel
{
public int Id {get;set;}
public string Name {get;set;}
public PhoneNumber PhoneNumber1 {get;set;}
public PhoneNumber PhoneNumber2 {get;set;}
}
Create
반환하도록 변경ClientViewModel
[HttpGet]
public ActionResult Create()
{
return View(new ClientViewModel());
}
(가)지도 HttpPost
을 사용 ClientViewModel
하고 그것에 값을지도 :
[HttpPost]
public ActionResult Create(ClientViewModel clientViewModel)
{
var client = new Client();
client.Name = clientViewModel.Name;
client.PhoneNumbers.Add(clientViewModel.PhoneNumber1);
client.PhoneNumbers.Add(clientViewModel.PhoneNumber2);
db.Clients.Add(client);
db.SaveChanges();
return RedirectToAction("Index", "Client");
}
그런 다음 마지막으로보기를 수정합니다.
<fieldset>
<legend>Client</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.PhoneNumber1.Number)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.PhoneNumber1.Number)
@Html.ValidationMessageFor(model => model.PhoneNumber1.Number)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.PhoneNumber2.Number)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.PhoneNumber2.Number)
@Html.ValidationMessageFor(model => model.PhoneNumber2.Number)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다