我正在研究使用Razor在MVC3中使用部分視圖,並且我獲得了部分視圖來呈現,並且工作正常。 但是,我想要做的是在部分視圖提交時刷新父視圖。當提交部分視圖的表單時刷新父視圖
代碼在我父視圖呈現局部視圖
<div id="mydiv">
@{ Html.RenderAction("Add", "Request"); }
</div>
父視圖操作簡單,
public ActionResult Index()
{
List<obj> reqs = //some query
return View(reqs);
}
在我的部分觀點的取得動作,我有:
public ActionResult Add()
{
AddRequestViewModel vm = new AddRequestViewModel();
//set some stuff on the VM here
return PartialView(vm);
}
在部分視圖調用的後處理操作中,如果modelstate無效,則return PartialView(vm)
如果它是有效的,我想要刷新父視圖和部分視圖。 我嘗試RedirectToAction,但這不能由部分,顯然,我試圖return Index();
稱爲一個動作被調用,而這會導致用於呈現局部視圖代碼中的問題,
Exception Details: System.InvalidOperationException: The model item passed into the dictionary is of type 'System.Collections.Generic.List'1[DatRequests.Models.ReqRequest]', but this dictionary requires a model item of type 'DatRequests.ViewModels.AddRequestViewModel'.
如何做到這一點的任何建議,將不勝感激。頁面的目的是顯示一個元素列表,並且partial包含一個向列表中添加一個新元素的表單。
Edit:
該部分的模型是不同的,因爲它包含選擇數據,這是從數據庫,這就是爲什麼我嘗試了RenderAction,但我不知道是否有其他方式做到這一點。
我沒有看到你在這種情況下需要Ajax請求。 –