我已用更多信息更新了问题。
我有这样的观点(简化版):
@using (Html.BeginForm())
{
@Html.ValidationSummary(false)
<fieldset>
<div class="editor-label">
@Html.LabelFor(model => model.UserName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserName)
@Html.ValidationMessageFor(model => model.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Password)
</div>
<div class="editor-field">
@Html.PasswordFor(model => model.Password)
@Html.ValidationMessageFor(model => model.Password)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.RememberMe)
</div>
<div class="editor-field">
@Html.CheckBoxFor(model => model.RememberMe)
</div>
<input type="image" src="@Url.Content("~/Images/login_button.png")" alt="Login" />
</fieldset>
}
突然,虽然在过去的3个小时内整合了很多其他代码,但我刚才注意到我的视图已停止导致后期/后退。这是一个简单的登录表单。
我看到这里没有提交类型。但我想知道它早些时候是如何回归自己的。 我应该改变什么?
更新
我刚刚意识到它没有回发到索引(httpPost),因为我在同一个控制器中有一个CheckUserName远程验证。当我删除远程验证时,它可以工作。如果我把它介绍回来,它就不会。这是我的远程验证。
[AllowAnonymous]
public JsonResult CheckUserName(string userName)
{
using (var context = new Presentation.Models.PMSEntities())
{
context.ContextOptions.LazyLoadingEnabled = false;
Func<User, bool> predicate = u => u.UserName.SameAs(userName) && u.Status.SameAs("Active");
return Json(context.Users.Any(predicate), JsonRequestBehavior.AllowGet);
}
}
我在相应的字段上设置了RemoteAttribute
。
答案 0 :(得分:0)
试试这个
你可以在Action方法上使用[HttpPost]来处理简单表格
或
您可以在上传文件或处理复杂表单时尝试此操作
@ Html.BeginForm(“Action”,“Controller”,new {SearchModel = Model},FormMethod.Post)
答案 1 :(得分:0)
input
的 type="image"
充当提交按钮。您缺少src属性的引号 - @Url.Content
会返回不带引号的网址,因此请尝试添加它们。
答案 2 :(得分:0)
调用Html.BeginForm()
会创建一个<form>
POST,以发布当前操作。
您需要将操作名称传递给BeginForm
。
例如:
@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post))
{
}