두 개의 연락처 (해당 연락처에 대한 전화 목록)로 ViewModel을 만들었습니다.MVC에서 뷰에서 컨트롤러로 데이터를 전달하는 방법 3
내 목표는 새 연락처에 대한 데이터를 추가하고 몇 가지 폰을 추가 한 다음 컨트롤러 작업으로 저장하는 것입니다.
내 연락처에 대한 스캐 폴딩 된 Create.cshtml을 편집하고 전화기에 대한 눈금을 추가했습니다. 휴대 전화를 만들기위한 자바 스크립트가 추가되었습니다. 여태까지는 그런대로 잘됐다.
문제는 내가 만들기 버튼을 클릭 할 때 컨트롤러로 돌아가서 전화기가 없습니다. 보기에서 IEnumerable에 전화 행을 추가하려면 어떻게해야합니까?
편집 : 이 컨텍스트에서 올바르지 않은보기로 코드를 실행했습니다.
내 뷰 모델 :
public class ContactViewModel
{
public Contact Contact {get; set;}
public IEnumerable<Phone> Phones { get; set; }
}
내보기 :
@model PilotKibsNet.Controllers.ContactViewModel
<script type="text/javascript" src="../../Scripts/jquery-1.5.1.js"></script>
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script type="text/javascript">
function Add() {
$("#tbl > tbody:last").append("<tr><td>" + $("#Number").val() + "</td><td>" + $("#Kind").val() + "</td><td></td></tr>");
$("#Number").val("");
$("#Kind").val("");
}
</script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Contact</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Contact.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Contact.Name)
@Html.ValidationMessageFor(model => model.Contact.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Contact.Address)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Contact.Address)
@Html.ValidationMessageFor(model => model.Contact.Address)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Contact.City)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Contact.City)
@Html.ValidationMessageFor(model => model.Contact.City)
</div>
<legend>Phone numbers</legend>
<label>Number :</label>
@Html.TextBox("Number")
<label>Kind :</label>
@Html.TextBox("Kind")
<input type="button" value="Add" onclick="Add()" />
<table id="tbl">
<tr>
<th>
Phone
</th>
<th>
Kind
</th>
<th></th>
</tr>
<tbody>
</tbody>
</table>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
그리고, 컨트롤러 작용에 의해에서, 연락처 데이터를 가지고 있지만 전화가 빈 목록입니다.
[HttpPost]
public ActionResult Create(ContactViewModel contactViewModel)
{
if (ModelState.IsValid)
{
contactViewModel.Contact.id = Guid.NewGuid();
db.Contacts.AddObject(contactViewModel.Contact);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(contactViewModel.Contact);
}
어떻게 전화를 서버로 다시 가져올 수 있습니까?!?
당신의 'td 's에 기존의 td 's가 가지고있는 이름을 추가하려고합니다. – Hadas