내 ASP.NET 사이트의 특정 부분에 문제가 있습니다. 이 페이지는 기본적으로 사용자가 인보이스를 편집 한 다음 변경 사항을 게시하는 곳입니다.POST를 통한 모델 전달
이 시점에서 나는 현재 작동중인 페이지를 다시 작성하고 있습니다.
public ActionResult EditInvoice()
{
SalesDocument invoice = null;
try
{
invoice = SomeService.GetTheInvoice();
}
catch (Exception ex)
{
return HandleControllerException(ex);
}
return View("InvoiceEdit", invoice.LineItems);
}
은 "InvoiceEdit"의 모델은보기 목록
입니다 : 다른 하나는내가 처음 EditInvoice 조치로 이동 MVC 3 나이보다 나는 차이가 다른 무엇인지 알아낼 수 없습니다
지금은보기 좋은로드 및 디스플레이 형태의 모든 문서 개별 항목 : 다음
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<List<MyApp.SalesDocumentLineItem>>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm()) {%>
<fieldset>
<legend>Line Items</legend>
<div id="lineItems" class="table">
<div class="row">
<div class="colHButton">X</div>
<div class="colH">Item</div>
<div class="colHPrice">Price</div>
<div class="colHQty">Qty</div>
</div>
<% foreach (var item in Model.Where(m => m.LineItemType.Id == NexTow.Client.Framework.UnitsService.LineItemTypes.SaleItem || m.LineItemType.Id == NexTow.Client.Framework.UnitsService.LineItemTypes.NonSaleItem))
{ %>
<div class="row">
<%=Html.Hidden("Model.LineItemNameId", item.LineItemNameId)%>
<div class="cellButton"><button onclick="DeleteContainer(event);">X</button></div>
<div class="cell"><span class="formData"><%=item.LineItemDescription %></span></div>
<div class="cellPrice">
<span class="formData">$</span>
<%= Html.TextBox("Model.Price", item.Price, new { style="width:75px;" })%>
</div>
<div class="cellQty">
<%= Html.TextBox("Model.Quantity", item.Quantity, new { style = "width:60px;" })%>
</div>
</div>
<%} %>
</div>
</fieldset>
<p>
<input type="submit" value="Update Invoice" onclick="SequenceFormElementsNames('salesItems');" />
</p>
<% } %>
</asp:Content>
이 다음 사용자에게 항목을 편집 할 수있는 기능을 제공합니다
, 사용자 "송장 업데이트"제출 버튼을 클릭하십시오. 게시물을 사용하여 동일한 관점과 행동이 게시물 :
[HttpPost]
public ActionResult EditInvoice(List<SalesDocumentLineItem> salesItems)
{
if (salesItems == null || salesItems.Count == 0)
{
return View("ClientError", new ErrorModel() { Description = "Line items required." });
}
SalesDocument invoice = null;
try
{
invoice = SomeService.UpdateInvoice();
}
catch (Exception ex)
{
return HandleControllerException(ex);
}
InvoiceModel model = new InvoiceModel();
model.Document = invoice;
return View("InvoicePreview", model);
}
그러나, 바로 그겁니다이 이전 응용 프로그램에서 일했다. 새로운 기능에서는이 기능이 작동하지 않습니다. 최종 EditInvoice POST 액션 메서드에서 중단 점을 지정하면 salesItems 컬렉션이 NULL이됩니다. 무슨 일이야!?
봐. 그들은 꽤 벗어날 것 같습니다. 필자는 MVC 폼 포스트가 foreach 대신에 for 루프로 끝나고 입력 필드에 Html.TextBoxFor (x => x [i] .Price)로 끝나는 것을 보았습니다. 필드에 고유 한 이름을 부여하고 컬렉션을 올바르게 게시합니다. 당신의 모범을 보일 수있는 방법이 있는지 나는 모른다. –