MVC表单POST不起作用

时间:2016-12-10 08:00:55

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

我有一个小表单,只有两个字段,即密钥(隐藏)和密码,当用户填写密码点击此提交按钮时,我需要调用一个操作方法并更新数据库中的内容。我无法使用当前的代码

模型: -

 public class AccountPasswordResetModel
    {
        public string Key { get; set; }
        public string Password { get; set; }
    }

控制器

    public class AccountPasswordResetController:Controller
    {
        public ActionResult Index()
        {
            return     View("~/Areas/Home/Views/AccountPasswordReset/Index.cshtml");
        }


        public ActionResult Update(AccountPasswordResetModel AccountPasswordResetModel )
        {
            return Redirect("http://www.example.org");
        }
    }

CSHTML: -

@model Verivox.Home.Presentation.Model.AccountPasswordResetModel

@using(@Html.BeginForm("Update","AccountPasswordReset",FormMethod.Post))
{
@Html.TextBoxFor(x=>x.Key)
@Html.TextBoxFor(x=>x.Password)
    <input type="submit" value="Update"/>
}

最初使用Fluent Routing注册路线

var accountPasswordResetRoute = new LowercaseRoute("partners/accountVerification/{verificationKey}");
            context.MapNamedRoute(accountPasswordResetRoute.WithDefaultAction<AccountPasswordResetController>(t => t.Index()), "test");

因此,索引操作执行得很好,但是当我发布表单时,Index()会再次执行。

这里有什么问题?

1 个答案:

答案 0 :(得分:0)

尝试 [HttpPost] public ActionResult Update(AccountPasswordResetModel AccountPasswordResetModel ) { return Redirect("http://www.example.org"); } 在行动前添加[HttpPost]

<强>更新 编辑视图

@using(@Html.BeginForm("Update","AccountPasswordReset",FormMethod.Post))
{
 @Html.EditorFor(model =>model.Key)
 @Html.EditorFor(model =>model.Password)
    <input type="submit" value="Update"/>
}

或 添加到控制器

[HttpPost]
public ActionResult Update(string Key,string Password )
        {
            return Redirect("http://www.example.org");
        }