我有一个小表单,只有两个字段,即密钥(隐藏)和密码,当用户填写密码点击此提交按钮时,我需要调用一个操作方法并更新数据库中的内容。我无法使用当前的代码
模型: -
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()会再次执行。
这里有什么问题?
答案 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");
}