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 小时内集成了许多其他代码时,我刚刚注意到我的视图已经停止导致回帖/回帖。这是一个简单的登录表单。

我看到这里没有提交类型。但我想知道它是如何早些时候发回给自己的。我应该改变什么?

更新

我刚刚意识到它没有回发到索引(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在适当的领域有一套。

4

3 回答 3

0

尝试这个

您可以在简单表单的 Action 方法上使用 [HttpPost]

或者

您可以在上传文件或处理复杂表单时尝试此操作

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

于 2012-12-18T13:11:45.877 回答
0

inputwithtype="image"充当提交按钮。您缺少 src 属性的引号 -@Url.Content返回不带引号的 url,因此请尝试添加它们。

于 2012-12-18T13:13:54.627 回答
0

调用Html.BeginForm()会创建一个<form>POST 到当前操作的 POST。您需要将操作名称传递给BeginForm.

前任:

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