我有几个创建页面。单击我的提交按钮后,数据将正确插入数据库。但是,页面只停留在我的创建上。它不会像我想要的那样重定向到我的索引。我可以在编辑或删除记录时重定向。
我尝试过这些,结果相似:
return View("Index");
和
return RedirectToAction("Index");
这是我当前的控制器:
public ActionResult Index()
{
var model = from r in _db.Clients
orderby r.CompanyName ascending
select r;
return View(model);
}
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(Clients client)
{
if (ModelState.IsValid)
{
_db.Clients.Add(client);
_db.SaveChanges();
}
return RedirectToAction("Index")
}
我的视图中只有一个简单的按钮。
<input type="submit" class="btn btn-satgreen" value="Create"/>
感谢您的帮助
答案 0 :(得分:1)
我想添加评论,但我的声誉并不允许我:)。所以我将冒险在这里发布一个不完整的答案.. 作为一种常见做法,当您有一个要提交的表单时,您应该使用@using(Html.BeginForm())。这将考虑到拥有表单的所有技术细节并避免不必要的错误(我无法在您的代码中识别,抱歉!!)。 此外,您可以尝试在“创建”操作中放置一个断点,以查看它是否被正确调用。
答案 1 :(得分:0)
重定向的正确方法是返回RedirectResult。
在你的情况下似乎是:
[HttpGet]
public ActionResult Create(Clients client)
{
if (ModelState.IsValid)
{
_db.Clients.Add(client);
_db.SaveChanges();
}
return new RedirectResult("Index");
}
更新
要允许重定向,您应该使用HTTP GET而不是POST。将FormMethod.Get添加到表单参数并更改属性:
@using (Html.BeginForm("Login", "Account", FormMethod.Get))
{
// ...
<input type="submit" value="Sign In">
}