0

我需要通过 AJAX 提交数据,但只有一个空字符串到达ActivateUser​​方法。

这是标记

@model String
<div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
            <h4 class="modal-title">Benutzer aktivieren</h4>
        </div>
        <div class="modal-body">
            <div id="activateresult"></div>
            <div style="display: none" id="activateUserSuccess" class="alert alert-success">Der Benutzer konnte erfolgreich aktiviert werden :)</div>
            <div style="display: none" id="activateUserFailure" class="alert alert-danger">Leider konnte der Benutzer nicht aktiviert werden :(</div>
            <div class="list-group">
                @foreach (var item in @deactivatedUsers) {
                    using (Ajax.BeginForm("ActivateUser", "Settings", new AjaxOptions() {
                        HttpMethod = "POST",
                        OnSuccess = "activateSuccess(response)",
                        OnFailure = "activateFailure(jqXHR, textStatus, errorThrown)",
                        UpdateTargetId = "activateresult"
                    }, new {
                        @class = "list-group-item"
                    })) {
                    <h4>
                        @item.Username
                        @Html.Hidden("Username")
                    </h4>
                    <input class="btn btn-success" type="submit" name="@item.ID" value="Aktivieren" />
                    }
                }
            </div>
        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-primary" data-dismiss="modal">Fertig</button>
        </div>
    </div>
</div>

这是控制器方法

[HttpPost]
public ActionResult ActivateUser(string username) {
    try {
        customerModel.ActivateUser(username);
        return new JsonResult() { Data = true };
    } catch (Exception ex) {
        return new JsonResult() { Data = false };
    }
}

您可以在github上查看整个代码

我究竟做错了什么?

4

1 回答 1

1

尝试切换这个:

@Html.Hidden("Username")

对此:

@Html.Hidden("username", item.Username)

您操作的参数是小写的,我相信它是区分大小写的。

此外,我传入的第二个参数是value参数。没有它,我相信框架会UsernameModel. 但是在这里你有一个用户名属性item。因此,即使使用小写更正,框架也无法找到用户名。在这种情况下,您需要显式传入值。

您可以通过在浏览器中查看生成的 HTML 来验证您正在创建正确的内容。您要确保您的输入字段实际上是命名username的,并且它的值实际上是当前用户的用户名。

于 2013-08-15T19:58:00.670 回答