2016-10-10 60 views
1

我試圖在發佈/提交時在我的模型中獲得GroupGameId的值,但該值顯示爲0(即使在使用HiddenFor後)。我已經驗證HttpGet正確設置GroupGameId的值,並且它被視圖接收。在嵌套視圖模型中設置Html.HiddenFor屬性

的ViewModels

public class GameAssignerModel 
{ 
    // Other properties here.... 
    public List<GameAssignerTableModel> GameAssignerTable { get; set; } 
} 

public class GameAssignerTableModel 
{ 
    public int GroupGameId { get; set; } 

    [Required] 
    public string GameName { get; set; } 

    [Required] 
    public bool IsAssigned { get; set; } 

    public DateTime? UnAssignedDate { get; set; } 
} 

查看

@for (int i = 0; i < Model.GameAssignerTable.Count(); i++) 
    { 
     @Html.HiddenFor(m => m.GameAssignerTable[i].GroupGameId) 
     <tr> 
      <td>@Model.GameAssignerTable[i].GameName</td> 

      <td> 
       @Html.EditorFor(m => m.GameAssignerTable[i].IsAssigned) 
      </td> 
      <td> 
       @Html.TextBoxFor(m => m.GameAssignerTable[i].UnAssignedDate, new {id = "UnassignedDate" + i}) 
      </td> 
     </tr> 
    } 

編輯:數據正在通過Ajax提交了第一次,我不知道,如果該事項。我已驗證它在我的控制器中正在執行POST操作,並且模型數據的其餘部分正在正確提交。

if ($("#assignGames").valid()) { 
     $.ajax({ 
      url: this.action, 
      type: this.method, 
      data: $(this).serialize(), 
      success: function (result) { 
       if (result.success) { 
        $("#assignModal").modal("hide"); 
        location.reload(); 
       } 
+1

<td>標籤*我想發佈/提交時要得到我的模型GroupGameId值內解決,但該值顯示0 *您必須添加你的發佈方法 –

+0

當調試時,我把鼠標放在模型上,或者將模型添加到監視列表中,我可以看到GroupGameId的值是0.它只是一個帶有HttpPost的ActionResult,模型作爲參數 –

+0

發佈您的Action方法,並將您的表格封裝在表單標記中? – mxmissile

回答

2

這是通過將@Html.HiddenFor(m => m.GameAssignerTable[i].GroupGameId)GameName

@for (int i = 0; i < Model.GameAssignerTable.Count(); i++) 
{ 

    <tr> 
     <td> 
      @Model.GameAssignerTable[i].GameName 
      @Html.HiddenFor(m => m.GameAssignerTable[i].GroupGameId) 
    </td> 

     <td> 
      @Html.EditorFor(m => m.GameAssignerTable[i].IsAssigned) 
     </td> 
     <td> 
      @Html.TextBoxFor(m => m.GameAssignerTable[i].UnAssignedDate, new {id = "UnassignedDate" + i}) 
     </td> 
    </tr> 
} 
+2

請注意,原因是''不是''的有效同胞。 –

-1

我相信如果你在瀏覽器中檢查輸入html元素,你會看到問題。名稱屬性可能不正確。要修復,您可以爲hiddenfor元素添加額外參數:

new {Name = "GroupGameId"} 

這應該修復該元素的發佈。