1

我有一个“返回视图()”问题,它不会在我的控制器中执行代码。

我有一个带有此代码的控制器:

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当我尝试将一些数据输出到视图时。

不知道我做错了什么。

4

2 回答 2

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());
}

这是正确的工作流程:

  1. BestallMaklarBild调用 POST 控制器操作并传递一个视图模型
  2. 此控制器操作尝试持久化模型,并在成功的情况下重定向到MaklarBildBestalld控制器操作,将唯一标识符作为此模型的查询字符串传递给它,以便此操作能够检索回模型。在失败的情况下,它只是重新显示表单,以便用户可以修复他所做的错误,或者查看处理他的请求时出现问题的错误消息。
于 2012-08-18T13:30:01.293 回答
0

您必须确保您的视图在参数中将模型作为泛型类型。

于 2012-08-18T13:29:34.993 回答