2011-04-14 4 views
0

foreach 루프에서 텍스트 상자를 표시하려고 시도한 목록 개체가 있습니다. 그러나 게시물 빈 개체를 반환합니다. 나는 원인을 볼 수 없었다. 여기 foreach 루프의 양식 입력이 빈 모델을 반환합니다.

뷰에서 코드

<% (Html.BeginForm ("makeTransfer", "shareTransfer을"))을 이용하여 {%>

 <% foreach (var i in Model.Inform)//int i = 0; i < Model.Inform.Count(); i++){ %> 
       <%:Html.HiddenFor(x=>i.shares, new{@value = i.shares}) %> 
       ... 
       <td style = "width:20px"><%:Html.TextBoxFor(x=>i.sharesRq)%></td> cuddling 
     <%} %> 

    <%:Html.HiddenFor(x => x.accSrc, new { @value = Model.accSrc })%> 
      <%:Html.HiddenFor(x=>x.accDst, new{ @value = Model.accDst}) %> 

    Date of Transfer<%:Html.TextBoxFor(x => x.date)%> 
      Transfer with benefit<%:Html.CheckBoxFor(x => x.withBenefit)%> 

     <input type="submit" name="save" value="Save" /></div> 
     <input type="submit" name="cancel" value="Cancel" /></div> 

<%} %>

그리고 여기에 컨트롤러가 있습니다

public ActionResult makeTransfer (vmTransfer 전송, 문자열 저장, 문자열 취소) {

 if (cancel != null) 
      return RedirectToAction("startTransfer"); 

     else if (save != null) 
     { 

      foreach (var t in transfer.Inform) 
      { ... 

제 문제는 양식이 게시 될 때 transfer.Inform (마지막 두 번째 줄부터) 목록이 비어 있습니다. 최대한 빨리 도와주세요.

<% using (Html.BeginForm("makeTransfer", "shareTransfer")) { %> 
    <%= Html.EditorFor(x => x.Inform) %> 
    <%= Html.HiddenFor(x => x.accSrc, new { @value = Model.accSrc }) %> 
    <%= Html.HiddenFor(x => x.accDst, new { @value = Model.accDst }) %> 
    Date of Transfer <%= Html.TextBoxFor(x => x.date) %> 
    Transfer with benefit <%= Html.CheckBoxFor(x => x.withBenefit) %> 

    <input type="submit" name="save" value="Save" /></div> 
    <input type="submit" name="cancel" value="Cancel" /></div> 
<% } %> 

와 해당 편집기 템플릿

( ~/Views/Shared/EditorTemplates/InformViewModel.ascx) :

<%@ Control 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewUserControl<AppName.Models.InformViewModel>" 
%> 
<%= Html.HiddenFor(x => x.shares) %> 
... 
<td style="width:20px"> 
    <%= Html.TextBoxFor(x => x.sharesRq) %> 
</td> 

비 고 : 당신이해야 할 수도 있습니다

+0

, 당신은 코드 부분을 편집 할 수 있습니다하십시오. –

+0

코드의 일부로 회색 상자 바로 위에있는 줄을 고려하십시오. – merawi

답변

1

나는 편집기 템플릿을 사용하는 대신 귀하의 의견에있는 루프를 작성하는 당신을 추천 할 것입니다 Inform 등록 정보 유형에 따라 편집기 템플리트의 이름을 조정하십시오. 모든 것이 제대로 결합되도록

편집기 템플릿은 적절한 ID와 입력 필드의 이름을 생성하는 처리됩니다 :

[HttpPost] 
public ActionResult makeTransfer(vmTransfer transfer, string save, string cancel) 
{ 
    if (cancel != null) 
    { 
     return RedirectToAction("startTransfer"); 
    } 
    else if (save != null) 
    { 
     foreach (var t in transfer.Inform) 
     { 
      ... 
     } 
    } 
    ... 
} 
+0

Darin, 저는 이것을 사용자 컨트롤에 사용했습니다 : – merawi

+0

도움이 되었어요. 정말 고마워요. – merawi

관련 문제