그래,이 사람이 나를 도와 줄 수 있기를 바랍니다. (미리 감사드립니다.) MVC4를 사용하고 있습니다.MVC PartialView의 여러 폼이 나열된 첫 번째 항목을 제외한 모든 항목에 대해 널 (null)을 반환합니다.
내 ContractsModel에는 (다른 것들 중에서) ContractModel 목록이 들어 있습니다. 내 부분보기에서, 나는 목록을 작성하여 각각에 대한 양식을 만듭니다. 여태까지는 그런대로 잘됐다. 문제는 포스트 백에 있습니다. 첫 번째 양식은 항상 정상적으로 게시됩니다. 그러나 다른 (2, 3, 4 등)은 항상 null을 반환합니다.
디버깅 도구를 사용하여 확인한 다음 렌더링 된 컨트롤의 이름이 적절하게 지정되었는지 확인했습니다.
<select name="Contracts[0].OrganizationId" id="Contracts_0__OrganizationId">
<select name="Contracts[1].OrganizationId" id="Contracts_1__OrganizationId">
<select name="Contracts[2].OrganizationId" id="Contracts_2__OrganizationId">
는 또한 클라이언트가 실제로 서버에 데이터를 반환하지만, 어떤 이유로 내 ActionResult 기대되는 모델에 다시 부착하기 할 것 같지 않음을 확인했습니다. 어떤 아이디어?
간결함을 위해 코드를 최소화했습니다. 여기
내 모델입니다 : 다음public class ContractsModel
{
public ContractsModel()
{
this.Contracts = new List<ContractModel>();
this.OrganizationList = new List<SelectListItem>();
this.ContractNumList = new List<SelectListItem>();
}
public string ParentProjectId { get; set; }
// etc, etc .....
public List<ContractModel> Contracts { get; set; }
public List<SelectListItem> OrganizationList { get; set; }
public List<SelectListItem> ContractNumList { get; set; }
}
public class ContractModel
{
public string OrganizationId { get; set; }
public string Organization { get; set; }
public string ContractNumId { get; set; }
public string ContractNum { get; set; }
}
은 언뜻 내 부분보기
@model Manager.Models.ContractsModel
@for (int i = 0; i < Model.Contracts.Count(); i++)
{
var divId = "divContractsModelItem_" + (i + 1);
var saveButtonId = "btnContractsEditSave_" + (i + 1);
<div id = "@divId">
@using (Html.BeginForm("_ContractsEdit", "Projects", FormMethod.Post))
{
<fieldset>
<legend>General:</legend>
<div>
<label>Contracting Organization:</label>
@Html.DropDownListFor(model => model.Contracts[i].OrganizationId, new SelectList(Model.OrganizationList, "value", "text", Model.Contracts[i].OrganizationId))
</div>
<div>
<label>Contract Number:</label>
@Html.DropDownListFor(model => model.Contracts[i].ContractNumId, new SelectList(Model.ContractNumList, "value", "text", Model.Contracts[i].ContractNumId))
</div>
<div>
<button id="@saveButtonId" type="submit">Save</button>
</div>
</fieldset>
}
</div>
}
내 생각 엔 누락 된 색인 문제가 발생했다 ([이 블로그] (http://www.hanselman.com/) 참조). 블로그/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx))를 사용하여 여러 양식을 만들었습니다. 가장 좋은 방법은이 경우 문제를 해결하는 것입니다. –
(하나의 양식으로 이동하여 어떤 제출 버튼이 눌려 졌는지 그리고 따라서 어떤 계약 정보가 저장되었는지 결정하는 것 이외에) –
그랬습니다! 감사합니다 –