2

所以这很简单。我有一个调用控制器的视图,它(取决于布尔值)将返回一个新视图。但如果没有,将停留在当前视图上。

我将如何做到这一点?

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

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


为我的天鹰船长编辑^^

_Partial 页面代码:(感谢 John H

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

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

4

3 回答 3

3

您可以重定向到不同的视图:

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

        return RedirectToAction("actionname");
    }
}

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

于 2013-11-07T21:04:15.377 回答
3

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);
}
于 2013-11-07T21:05:37.990 回答
1

Do something like this

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

 }

}

于 2013-11-07T21:07:13.160 回答