MVC3 jQuery Ajaxパラメータデータは、コントローラでNULLです
-
11-12-2019 - |
質問
jQuery呼び出しを介して更新したいコントローラのアクションを持っています。アクションが実行されますが、パラメータにデータがありません。
私はいくつかのサーバーコードを実行したい列にカスタムコマンドを持つKedoui Gridを使用しています。
kendoui grid in view
...
columns.Command(command =>
{
command.Custom("ToggleRole").Click("toggleRole");
});
...
.
モデルはタイプリスト<_administrationusers>です。
public class _AdministrationUsers
{
[Key]
[ScaffoldColumn(false)]
public Guid UserID { get; set; }
public string UserName { get; set; }
public string Role { get; set; }
}
.
これは私のtoggleroleスクリプトです:
<script type="text/javascript">
function toggleRole(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
alert(JSON.stringify(dataItem));
$.ajax({
type: "POST",
url: '@Url.Action("ToggleRole", "Administration")',
data: JSON.stringify(dataItem),
success: function () {
RefreshGrid();
},
error: function () {
RefreshGrid()
}
});
}
</script>
.
これは私のコントローラーの行動です:
[HttpPost]
public ActionResult ToggleRole(string UserID, string UserName, string Role)
{
...
}
.
コントローラのアクションは起動しますが、パラメータのいずれにもデータがありません。
アラートをJavaScriptに入れて、「dataItem」変数に確かにデータがあることを確認します。これは警告テキストがどのように見えるものです:
.{"UserID":"f9f1d175...(etc.)","UserName":"User1","Role","Admin"}
解決
あなたのAjax Postの中でデータ型とContentTypeを指定してみましたか?
$.ajax({
type: "POST",
url: '@Url.Action("ToggleRole", "Administration")',
data: JSON.stringify(dataItem),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function () {
RefreshGrid();
},
error: function () {
RefreshGrid()
}
});
. 他のヒント
オブジェクト全体を1つのJSON文字列として投稿しているように見えますが、コントローラは3つの文字列を予定しています。MVC3を使用している場合、パラメータ名もコントローラの署名と一致する必要があります。データオブジェクトをコントローラから予測される入力と一致するようにデータオブジェクトを解析してください。このようなもの:
$.ajax({
type: "POST",
url: '@Url.Action("ToggleRole", "Administration")',
data: { UserID: dataItem.UserID, UserName: dataItem.UserID, Role: dataItem.Role },
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function () {
RefreshGrid();
},
error: function () {
RefreshGrid()
}
});
.
助けを願っています!
{"UserID":"f9f1d175...(etc.)","UserName":"User1","Role","Admin"}
.
私に間違っているようです。あなたはこれを望んでいませんか?
{"UserID":"f9f1d175...(etc.)","UserName":"User1","Role" : "Admin"}
.
「役割」:「admin」
所属していません StackOverflow