[英]get data from PartialView MVC4
我正在使用(ASP.Net MVC4),但是我陷入了如何從局部視圖中獲取信息的問題。 我的意思是我有一個ViewModel
public class ShowHomeViewModel
{
public int ID_ClientTypeID { get; set; }
public string ReservationDate { get; set; }
public short ClientNum { get; set; }
public string ClientPhone { get; set; }
public List<HomeViewModel> ReservedHuts { get; set; }
}
我有一個局部視圖,其中顯示了HomeViewModel的所有數據,顯示效果很好,問題是當我嘗試從視圖中恢復ReservedHuts列表時:
@model HutReservation.ViewModel.ShowHomeViewModel
<table>
<tr>
@{Html.RenderPartial("_Reservations", Model.ReservedHuts);}
</tr>
</table>
在我的視圖中,我顯示了列表並更改了一些數據,但是當我單擊按鈕並轉到“ New Method”下面時,結果表明ReservedHuts(HomeViewModel的列表)為null
[HttpPost] //cambiar la pagina para el partial view
public ActionResult New(ShowHomeViewModel vm) // <- this vm is null
{
foreach (HomeViewModel hvm in vm.ReservedHuts)
{
}
return View("ConfirmNew", vm);
}
我真的被困在這里,謝謝您的提前幫助
這里的問題是您的表單數據無法綁定到ShowHomeViewModel
。 這是因為渲染局部時Model的上下文已更改(模型上下文已從ShowHomeViewModel更改為HomeViewModel)。 MVC默認情況下使用約定來綁定屬性(如果需要,可以創建自己的模型綁定程序,該綁定程序可以使用要綁定的任何方法)。 默認情況下,當您創建EditorFor
模型的屬性時,MVC會適當地命名表單字段,以便可以將其綁定回其創建時所依據的模型上下文。
因此,如果跳過部分視圖,則可以僅在父視圖中運行foreach,並且您可能仍可以綁定到ShowHomeViewModel
因為它將像這樣命名表單字段:
<input name="ReservedHuts_HutId">
但是,如果您使用partial並更改模型上下文,它將呈現相同的輸入,如下所示:
<input name="HutId">
因此,MVC不能(默認)綁定的值HutId
到ShowHomeViewModel
因為沒有所謂的財產HutId
(但對HomeViewModel HutId屬性,所以它會成功綁定!)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.