質問をより多くの情報で更新しました。
私はこのような見方をしています(簡略版):
@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時間に他の多くのコードを統合しているときに、ビューがポスト/バックの原因にならなくなったことに気づきました。シンプルなログインフォームです。
ここには送信タイプがないようです。しかし、それが以前にどのようにそれ自体にポストバックしていたのだろうか。何を変更すればよいですか?
アップデート
同じコントローラーにCheckUserNameリモート検証があるため、インデックス(httpPost)にポストバックされていないことに気付きました。リモート検証を削除すると、機能します。紹介してもしません。これが私のリモート検証です。
[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
適切なフィールドにセットを持っています。