在我的視圖中顯示的模型已被用戶操作過濾,因此一些原始數據不再存在。注重對ActionLink
爲EditRow
,這是怎麼了我的視圖顯示模式:如何將模型傳遞迴ASP.NET MVC中的Controller?
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.User.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.User.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.User.Email)
</td>
<td>
@item.Weekly.WeekBeginning.ToShortDateString() - @item.Weekly.WeekEnding.ToShortDateString()
</td>
<td>
@(item.WeeklyTargetId != ViewBag.Edited ? Html.DisplayFor(modelItem => item.Hours) : Html.EditorFor(modelItem => item.Hours))
</td>
<td>
//here is the line I am trying to pass the model through:
@Html.ActionLink("Edit", "EditRow", new {id = item.WeeklyTargetId, currentSelection = Model}) |
@Html.ActionLink("Details", "Details", new {id = item.WeeklyTargetId}) |
@Html.ActionLink("Delete", "Delete", new {id = item.WeeklyTargetId})
</td>
</tr>
}
在ActionLink
爲EditRow
我能夠很容易地通過傳遞每個項目的ID,但是當我加入currentSelection = Model
甚至= Model.ToList()
,控制方法接收的0
這裏計數是我使用的操作簽名:
//I've tried IQueryable<WeeklyTarget> as well
public ActionResult EditRow(int? id, List<WeeklyTarget> selection)
我的問題是我怎麼能傳遞立方米rrent(過濾)模型在視圖中顯示給控制器動作?我應該以不同的方式來解決這個問題嗎?
你正在以一種不尋常的方式去解決它。通常,您的「編輯」操作採用某種類型的ID,並返回從該ID生成的模型。然後,「編輯」的POST操作將採用更新後的模型。 – Jonesopolis
我用'EditRow'替換了'Edit'動作,我打算更新這個視圖中的Hours列而不是導航到新的頁面。這工作正常,但是當我點擊這個按鈕模型恢復到未經過濾的視圖。我希望數據持續存在。 –
在視圖「currentSelection」應該是「選擇」爲了匹配您的行動方法中的參數。只是我做了類似的事情。 – asunrey