【问题标题】:return view doesn't run controller code mvc返回视图不运行控制器代码 mvc
【发布时间】:2012-08-18 13:01:29
【问题描述】:

我的“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

不知道自己做错了什么。

【问题讨论】:

  • 你有没有注意到你没有给model.something分配任何东西?
  • 达林是正确的。为什么你会期望“返回 View();”执行控制器方法而不是渲染视图? MVC 有点暗示 V 和 C 部分是分开的...... :-)

标签: c# asp.net-mvc-3 controller actionresult


【解决方案1】:

这很正常。如果要执行代码,则需要重定向到此控制器操作:

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 控制器操作,将唯一标识符作为此模型的查询字符串传递给它,以便此操作能够检索模型。如果失败,它只是重新显示表单,以便用户可以修复他所做的错误,或者查看处理他的请求时出现问题的错误消息。

【讨论】:

  • 所以我必须向我的 MaklarBildBestalld() ActionResult 添加一个输入参数才能让它工作?今天我没有任何输入参数。我找不到任何 RedirectToActionView,但我想你的意思是 RedirectToAction 方法。抱歉,我是 MVC 的新手。
  • 是的,那是一种类型。正确的使用方法是RedirectToAction。您可以传递 id 参数,以便能够使用此 id 在目标操作中检索模型。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    相关资源
    最近更新 更多