重定向到索引不在表单提交上工作

时间:2015-01-13 15:18:27

标签: asp.net-mvc entity-framework

我有几个创建页面。单击我的提交按钮后,数据将正确插入数据库。但是,页面只停留在我的创建上。它不会像我想要的那样重定向到我的索引。我可以在编辑或删除记录时重定向。

我尝试过这些,结果相似:

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"/>

感谢您的帮助

2 个答案:

答案 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">
}