控制器返回当前视图

时间:2013-11-07 21:00:07

标签: c# asp.net-mvc asp.net-mvc-4

所以这很简单。我有一个调用控制器的视图,它(取决于bool)将返回一个新视图。但如果没有,将保留当前的观点。

我将如何做到这一点?

我当前的控制器代码是这样的:

public class MyController : Controller
{
    public ActionResult someView(bool myBool) // is really a string
    {
        if (myBool) // Is really checking if the string is empty
        {
            ModelState.AddModelError("message", "This is true");
        }
        else
        {
            return View();
        }
        return null;
    }
}

我知道我需要了解更多有关mvc4的信息,但请一起玩;-D


编辑 我的队长Skyhawk ^^

_Partial页面代码:(感谢John H

@using (Html.BeginForm("someView", "My", FormMethod.Get))
{
    @Html.TextBox("text")
    <input type="submit" value='send' />
}

但我的问题的真正目标是找到一种方法来返回调用它的View。希望没有Model你将是正确的方式^^

3 个答案:

答案 0 :(得分:3)

您可以重定向到其他视图:

public class MyController : Controller
{
    public ActionResult someView(bool myBool)
    {
        if (myBool)
        {
            return View();
        }

        return RedirectToAction("actionname");
    }
}

您还可以使用RedirectToAction的其他参数指定控制器名称和传递到其他操作的内容

答案 1 :(得分:2)

return null毫无意义。这基本上是在说“不回归”。这样的事情会起作用:

public class MyController : Controller
{
    public ActionResult SomeView(bool myBool)
    {
        if (myBool)
        {
            ModelState.AddModelError("message", "This is true");
            return View();
        }

        return RedirectToAction("SomeOtherView");
    }
}

这与我在你提出的另一个问题上提到的ModelState.IsValid模式非常接近(具体如下:

public ActionResult SomeView(SomeViewModel model)
{
    if (ModelState.IsValid)
    {
       // Model is valid so redirect to another action
       // to indicate success.
       return RedirectToAction("Success");
    }

    // This redisplays the form with any errors in the ModelState
    // collection that have been added by the model binder.
    return View(model);
}

答案 2 :(得分:1)

做这样的事情

public class MyController : Controller
{
public ActionResult someView(bool myBool)
{
    if (myBool)
    {
        return View("someView");
      // or return ReddirectToAction("someAction")
    }
    else
    {
        return View();
    }

 }

}