我正在使用RedirectToAction将新模型传递到不同的视图。
[HttpPost]
public ActionResult Index(BlogViewModel vm)
{
vm.IsValid = ModelState.IsValid;
vm.LoadDropDowns();
vm.ProcessRequest();
if (vm.IsValid)
{
// NOTE: Must clear the model state in order to bind
// the @Html helpers to the new model values
ModelState.Clear();
}
else
{
foreach (var item in vm.ValidationErrors)
{
ModelState.AddModelError(item.Key, item.Value);
}
}
if (vm.EventCommand == "viewblog")
{
//Note: this is a DIFFERENT model than the one passed into this method
var bpvm = new BlogPostViewModel
{
Blog = vm.Entity,
IsBlogPostListAreaVisible = true
};
return RedirectToAction("BlogPost", "Blogs", bpvm);
}
return View(vm);
}
在单步执行代码时,变量bpvm完全填充了正确的数据。是的vm.EventCommand ==" viewblog"是的,所以它应该归结为重定向,它确实如此。
在html中
@model MachineryRestorations.Services.BlogService.BlogPostViewModel
@{
ViewBag.Title = "BlogPost";
}
@using (Html.BeginForm())
{
<!-- BEGIN HIDDEN FIELDS AREA -->
@Html.HiddenFor(m => m.BlogPost.BlogPostId)
@*@Html.HiddenFor(m => m.EventArgument)*@
<!-- END HIDDEN FIELDS AREA -->
if (Model.IsBlogPostListAreaVisible)
{
<!-- code removed for brevity -->
}
}
修改 和控制器中的代码
public ActionResult BlogPost(BlogPostViewModel bpvm)
{
return View(bpvm);
}
我在Model.IsBlogPostListAreaVisible上收到错误,这是因为在BeginForm上有一个断点,我看到Model是null。当我传递一个完全有效的模型时,这是怎么回事?
答案 0 :(得分:1)
您将返回BlogViewModel而不是BlogPostViewModel。如果
if(vm.EventCommand ==“viewblog”)
是正确的然后返回RedirectToAction(“BlogPost”,“Blogs”,bpvm);仅重定向到操作,我们没有看到内部代码
答案 1 :(得分:0)
确保在您要重定向到的操作方法中填充ViewModel BlogPostViewModel 。我认为它应该是 BlogPost(BlogPostViewModel vm) 。