我需要通过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">×</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
上的整个代码我做错了什么?
答案 0 :(得分:1)
尝试切换:
@Html.Hidden("Username")
到此:
@Html.Hidden("username", item.Username)
您的操作的参数是小写的,我相信它区分大小写。
此外,我传入的第二个参数是value
参数。如果没有这个,我相信框架将在Username
上寻找Model
属性。但是这里有item
上的用户名属性。因此,即使使用小写校正,框架也无法找到用户名。在这种情况下,您需要显式传入值。
您可以通过查看浏览器中生成的HTML来验证您是否正在创建正确的内容。您希望确保输入字段实际上名为username
,并且其值实际上是当前用户的用户名。