モデルオブジェクトのリストを使用してテーブルを作成しました。 その後、その行のボタンがクリックされると、行データがAjaxポストに渡されます。null json文字列をmvcコントローラに渡す方法を解決するには?
Ajaxポスト内で.stringify
が呼び出され、その行にデータが渡されます。 私は彼らが装着されていることを見ることができます開発ツールにワイヤ上で渡されるデータの値をチェックします。
["66", "[email protected]", "2009", "test",…]
0
:
"66"
1
:
"[email protected]"
2
:
"2009"
3
:
"test"
をしかし、私は、クライアント側から呼び出されたコントローラのPOSTアクションにステップするとき。予想されるJSON文字列はnull/emptyです。私は考えているかもしれないが、おそらくこれはbeacauseですstringify配列の各値に関連付けるプロパティ名がありません。
質問:
どのようにMVCコントローラに渡されたヌルJSON文字列を解決することができますか?
public class Status
{
[Key]
public int ID { get; set; }
public string Contact_Email { get; set; }
public string RID { get; set; }
public string Name { get; set; }
}
表およびAJAXポスト方法:
<table id="statusTable" class="table table-hover table-bordered results">
<thead>
<tr>
<th>ID</th>
<th>Email</th>
<th>RID</th>
<th>Name</th>
<th>Update Record</th>
</tr>
</thead>
<tbody>
@foreach (var row in Model.ReleaseStatus)
{
<tr>
<td>@Html.Raw(row.ID)</td>
<td>@Html.Raw(row.Contact_Email_Name)</td>
<td>@row.RID</td>
<td>@row.Name</td>
<td><button type="submit" class="btn btn-success">Update</button></td>
</tr>
}
</tbody>
</table>
$(".btn-success").click(function() {
var $td = $(this).closest('tr').children("td"),
len = $td.length;
var tableData = $td.map(function (i) {
if (i < len - 1)
return $(this).text();
}).get();
console.log(tableData);
//Post JSON data to controller
$.ajax({
type: "POST",
url: 'updateStatus',
data: JSON.stringify(tableData),
contentType: "application/json; charset=utf-8",
success: function (response) {
console.log("post success");
},
error: function (request) {
console.log("post error" + request.error);
}
});
});
とMVCコントローラでの最終的POSTメソッド:
モデル - ここ
は、以下の実施の骨子であります[HttpPost]
public ActionResult updateStatus(stirng jsonString)
{
//deserialise the json to a Status object here
}
を試してみてくださいモデルの代わりに 'string'にバインドします。 –
mvcアクションでonjectを指定しようとしましたが、あなたのメソッドは 'public ActionResult updateStatus(Status model)'とデータ 'var data = {ID:66、Contact_Email: '[email protected]' updateStatus(Status vm)のように、オブジェクトはポスト中にヌルです。私の主な問題は、データがjqueryで渡されるということは、値に名前が付けられていないということですね。 –
はい、私は前のコメントと同じように生成してオブジェクトを必要とし、ajaxでは 'contentType:" application/json; charset = utf-8 "、' data:data、 'を使用する理由はありますが、 –