指定表单提交数据

时间:2013-08-15 19:53:01

标签: c# asp.net-mvc-4 razor

我需要通过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>

这是Controller方法

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

您可以使用github

上的整个代码

我做错了什么?

1 个答案:

答案 0 :(得分:1)

尝试切换:

@Html.Hidden("Username")

到此:

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

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

此外,我传入的第二个参数是value参数。如果没有这个,我相信框架将在Username上寻找Model属性。但是这里有item上的用户名属性。因此,即使使用小写校正,框架也无法找到用户名。在这种情况下,您需要显式传入值。

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