我遇到“return view()”的问题,该问题不会在我的控制器中执行代码。
我有一个带有此代码的控制器:
public class BrokerController : BaseController
{
public ActionResult BestallMaklarBild()
{
return View(new BestallMaklarBildViewModel());
}
[HttpPost]
public ActionResult BestallMaklarBild(FormCollection collection)
{
try
{
//Some code
return View("MaklarBildBestalld",new MaklarBildBestalldViewModel());
}
catch
{
return View(new BestallMaklarBildViewModel());
}
}
public ActionResult MaklarBildBestalld()
{
//Some code
return View(new MaklarBildBestalldViewModel());
}
}
当我发布到我的控制器“BestallMaklarBild”然后尝试返回view("MaklarBildBestalld",new MaklarBildBestalldViewModel())
时,“MaklarbildBestalld”中的代码不会执行。因此,当模型返回到视图时,它不包含任何数据,并且当我尝试将某些数据输出到视图时,导致我的视图出现错误,指出model.something = null
。
不知道我做错了什么。
答案 0 :(得分:2)
这是正常的。如果要执行代码,则需要重定向到此控制器操作:
try
{
//Some code
return RedirectToAction("MaklarBildBestalld", new { id = "some id" });
}
catch
{
return View(new BestallMaklarBildViewModel());
}
现在行动将执行:
public ActionResult MaklarBildBestalld(string id)
{
//Some code
return View(new MaklarBildBestalldViewModel());
}
这是正确的工作流程:
BestallMaklarBild
POST控制器操作并传递视图模型MaklarBildBestalld
控制器操作成功的情况下重定向,并将唯一标识符作为此模型的查询字符串传递,以便此操作能够检索模型。如果失败,它只需重新显示表单,以便用户可以修复他所做的错误,或者看到错误消息表明处理他的请求时出现问题。答案 1 :(得分:0)
您必须确保您的视图将参数中的模型作为泛型类型。