2017-07-20 15 views
0

送信ボタンをクリックするとデータのリストが表示されますが、データは特定のコントローラに送られるべきですが、それはできません。以下は、私がデータを表示していた部分図である。今ここで私はちょうどにその部分データを送信したいデータがコントローラに渡されない

public ActionResult Index() 
     { 
      List<TicketDetails> _TicketDetails = new List<TicketDetails>(); 
      _TicketDetails = (from ticketdata in _entities.AccMng_TicketDetails.AsEnumerable() 
            select new TicketDetails 
            {TicketDetailsGuid = ticketdata.TicketDetailsGuid, 
             ActionBy = ticketdata.ActionBy, 
            CAStatus = ticketdata.CAStatus, 
            Comment = ticketdata.Comment, 
            Summary = ticketdata.Summary}).ToList(); 

      return View(_TicketDetails); 
     } 

:データの上に表示され、そこから

@model IEnumerable<WebApplication1.Models.TicketDetails> 

@using (Html.BeginForm("SubmitHours", "TicketDetails", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    if (Model.Count() > 0) 
    { 
     <hr /> 
     <table cellpadding="0" cellspacing="0"> 
      <tr> 
       <th>Ticket No.</th> 
       <th>Summary</th> 
       <th>Status</th> 
       <th>Action Date</th> 
       <th>Billable Hours</th> 
      </tr> 
      @foreach (var ticketdata in Model) 
      { 
       <tr> 
        <td>@Html.DisplayFor(modelitem => ticketdata.TicketDetailsGuid)</td> 
        <td>@Html.DisplayFor(modelitem => ticketdata.Summary)</td> 
        <td>@Html.DisplayFor(modelitem => ticketdata.CAStatus)</td> 
        <td>@Html.DisplayFor(modelitem => ticketdata.ActionDate)</td> 
        <td>@Html.TextBox("Comment", null, new { @class = "form-control" }) </td> 
       </tr> 
      } 

     </table> 

    } 
    <input type="submit" value="Submit" /> 
    @*<input type="button" value="Submit" onclick="location.href='@Url.Action("SubmitHours", "TicketDetails")'" />*@ 
} 

コントローラは以下のとおりであります特定のコントローラが、そのデータが来ない:

 [HttpPost] 
     public ActionResult SubmitHours(List<AccMng_TicketDetails> _AccMng_TicketDetails) 
     { 
      return View(_AccMng_TicketDetails); 
     } 
+3

フォームには、「AccMng_TicketDetails」に関連付けられたプロパティのフォームコントロールが含まれていません。フォームコントロールは「Comment」という名前のプロパティに対してのみ使用できます。メソッドのパラメータは「IEnumerable comment'あなたの 'TextBox()'は無効なhtmlである 'id'属性が重複して生成されています) –

+0

@StephenMuecke返信ありがとうございますがコメントを削除した後にテキストボックスのデータが渡されません – Bhupendra

+1

テキストボックスを削除した場合、掲示される。フォームはフォームコントロールの名前/値のペアのみを投稿します(あなたは何も持っていません) –

答えて

3

まず、私は、インデックスベースのアプローチを使用するようにモデル定義として代わりにIEnumerableを少なくとも使用のリストをお勧めします。各行のコメントを返すだけの場合は、コメントボックスを式ベースのヘルパーに変更し、GUIDの隠しフィールドを追加します(コントローラにポストバックするため)。

@for (var i = 0; i < Model.Count; i++) 
{ 
    <tr> 
     <td> 
     @Html.DisplayFor(m => m[i].TicketDetailsGuid) 
     @Html.HiddenFor(m => m[i].TicketDetailsGuid) 
     </td> 
     <td>@Html.DisplayFor(m => m[i].Summary)</td> 
     <td>@Html.DisplayFor(m => m[i].CAStatus)</td> 
     <td>@Html.DisplayFor(m => m[i].ActionDate)</td> 
     <td>@Html.TextBoxFor(m => m[i].Comment, new { @class = "form-control" }) </td> 
    </tr> 
} 

場合はバックページの記事(彼らはUIで入力されているので)、それだけで人口TicketDetailsGuidとコメントフィールドを持つオブジェクトのリストをポストバックされます。

0

は使用を使用してみてください@EditorFor代わりDisplayForと@For代わりに、それは

01のような指標だと@foreachし、任意の項目リファラ@Leonardoが言ったように
@Html.EditorFor(model => model[i].Summary) 
関連する問題