所以这很简单。我有一个调用控制器的视图,它(取决于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
你将是正确的方式^^
答案 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();
}
}
}