2017-07-26 27 views
1

查看到控制器通行證對象使用mvc4

@if (weekMaster != null) 
{ 
    using (Html.BeginForm("UpdatePlan", "generalPlan", FormMethod.Post, new { })) 
    { 
    <table class="table-bordered"> 
    <tr> 
    @foreach (TermMaster obj in weekMaster.ToList()) 
    { 
    <td align="center"> 
    <span> @obj.termStartDate.ToString("dd MMM") - @obj.termEndDate.ToString("dd MMM")</span> 
    <br /> 
    <input type="hidden" name="ObjHid" value="@obj" /> 
    <input type="hidden" name="startDate" value="@obj.termStartDate" /> 
    <input type="hidden" name="endDate" value="@obj.termEndDate" /> 
    <input type="text" style="width:80%" name="weekSession" /> 
    </td> 
} 
    <td> 
<input type="submit" value="Update" class="btn-primary" /> 
    </td> 
</tr> 
</table> 
} } 

控制器

[HttpPost] 
    public ActionResult UpdatePlan(List<DateTime> startDate, List<DateTime> endDate, List<int> weekSession, List<TermMaster> ObjHid) 
    { 
     return View(); 
    } 

我使用輸入法<input type="hidden" name="ObjHid" value="@obj" />但示出NULL值嘗試上述TermMaster類Object合格合格Class Object from View to Controller如果通過如單值startDateendDate然後它工作正常。

我的代碼有什麼問題?如何在Post方法中傳遞類對象List?

請參考圖片 enter image description here

+4

建議你參考[這個答案](http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943) –

+1

但是什麼是降低性能你的應用程序通過嘗試發回一個'TermMaster'的集合,你甚至沒有編輯 –

+0

@StephenMuecke在post方法我插入一些參數值與文本框的值,我需要從TermMaster的一些價值 – Pravin

回答

1

你必須通過下面的方法來做到這一點。

創建一個模型而不是多個參數,並在cshtml中使用索引。

public class model 
{ 
    public List<DateTime> startDate { get; set; } 
    public List<DateTime> endDate { get; set; } 
    public List<int> weekSession { get; set; } 
    public List<TermMaster> ObjHid { get; set; } 
} 

CSHTML

@{ int i = 0; } 
@foreach (TermMaster obj in weekMaster.ToList()) 
    { 
    <td align="center"> 
    <span> @obj.termStartDate.ToString("dd MMM") - @obj.termEndDate.ToString("dd MMM")</span> 
    <br /> 

    <input type="hidden" name="ObjHid[@i].termStartDate" value="@obj.termStartDate.ToString("dd MMM")" /> 
    <input type="hidden" name="ObjHid[@i].termStartDate" value="@obj.termStartDate.ToString("dd MMM")" /> 

    <input type="hidden" name="startDate[@i]" value="@obj.termStartDate" /> 
    <input type="hidden" name="endDate[@i]" value="@obj.termEndDate" /> 
    <input type="text" style="width:80%" name="weekSession[@i]" /> 
    </td> 

    i++ 
} 
+2

錯誤 - ''只回發一個單一的值,而'obj'是一個複雜的對象(你的第一個輸入產生'value =「AssemblyName.TermMaster」''不能綁定到一個複雜的對象 –

+0

@StephenMuecke我修改了我的回答.. :) –

+0

我建議你閱讀我給出的鏈接 –

0

你不能將對象綁定到您的輸入控制器。你可以序列化對象到JSON。在控制器中,您可以將您的輸入值作爲字符串並將其反序列化。