【发布时间】:2011-09-20 00:43:59
【问题描述】:
我正在研究使用 Razor 在 MVC3 中使用局部视图,我得到了要渲染的局部视图,它工作正常。 不过,我想做的是在提交部分视图时刷新父视图。
在我的父视图中渲染部分视图的代码
<div id="mydiv">
@{ Html.RenderAction("Add", "Request"); }
</div>
父视图的操作很简单,
public ActionResult Index()
{
List<obj> reqs = //some query
return View(reqs);
}
在我的部分视图中,我有 get 操作:
public ActionResult Add()
{
AddRequestViewModel vm = new AddRequestViewModel();
//set some stuff on the VM here
return PartialView(vm);
}
在局部视图调用的post action中,如果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'.
任何有关如何执行此操作的建议将不胜感激。页面的目的是显示一个元素列表,部分包含一个向列表添加新元素的表单。
Edit: partial 的模型不同,因为它包含用于选择的数据,这些数据来自 db,这就是我尝试 RenderAction 的原因,但我不确定是否有其他方法可以做到这一点。
【问题讨论】:
-
在这种情况下,我看不出您在哪里需要 Ajax 请求。
标签: asp.net-mvc-3 razor partial-views