0

質問をより多くの情報で更新しました。

私はこのような見方をしています(簡略版):

@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適切なフィールドにセットを持っています。

4

3 に答える 3

0

これを試して

単純なフォームの Action メソッドで [HttpPost] を使用するだけです

また

ファイルをアップロードするとき、または複雑なフォームで作業するときにこれを試すことができます

@Html.BeginForm("Action", "Controller", new { SearchModel = Model }, FormMethod.Post)

于 2012-12-18T13:11:45.877 に答える
0

inputtype="image"送信ボタンとして機能します。src 属性の引用符がありません -@Url.Content引用符なしで URL を返すので、追加してみてください。

于 2012-12-18T13:13:54.627 に答える
0

を呼び出すと、現在の action に POST する がHtml.BeginForm()作成されます。<form>アクション名を に渡す必要がありますBeginForm

元:

    @using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post))
    {
    }
于 2012-12-18T13:24:27.327 に答える