0

ActivateUserAJAX 経由でデータを送信する必要がありますが、メソッドに空の文字列しか到達しません。

マークアップはこちら

@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)

アクションのパラメーターは小文字で、大文字と小文字が区別されると思います。

さらに、私が渡す 2 番目のパラメーターはvalueパラメーターです。Usernameそれがなければ、フレームワークは のプロパティを探すと思いますModel。しかし、ここでは にユーザー名プロパティがありますitem。そのため、フレームワークは小文字の修正を行ってもユーザー名を見つけることができません。この場合、値を明示的に渡す必要があります。

ブラウザで生成された HTML を確認することで、正しいものを作成していることを確認できます。入力フィールドに実際に名前が付けられusername、その値が実際に現在のユーザーのユーザー名であることを確認する必要があります。

于 2013-08-15T19:58:00.670 に答える