私はajax呼び出しからデータを取得する状況があります。私は、アクションメソッドを呼び出し、引数としてデータを渡したい。アクションメソッドに渡されるデータは、パラメータリストのオブジェクトプロパティにマップされる必要があります。 ここにFullQuestionと呼ばれるクラスがあります。mvcアクションメソッドで複雑なJSONオブジェクトを渡す方法は?
public class FullQuestion : Question
{
public string Title { get; set; }
public string Content { get; set; }
public List<Tag> Tags { get; set; }
}
は、ここに私のAjax呼び出し方法
var finalTagResultText = {Title: "title", Content: "content",Tag: { tagName: "tname", tagDescription: "tdesc"},Tag: { tagName: "tname1", tagDescription: "tdesc1"}};
$.ajax({
url: '@Url.Action("AskQuestion", "Dashboard")',
type: "POST",
data: JSON.stringify(finalTagResultText),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
window.location.href = "@Url.Action("Questions", "Dashboard")";
}
});
ここに私のアクションメソッドです。
[HttpPost]
[ActionName("AskQuestion")]
public void AskQuestion_Post(FullQuestion question)
{
}
JSONオブジェクトをFullQuestionオブジェクトとして渡したいと思っています。私はstingifyメソッドを利用するためにjson2ライブラリを使用しました。 タイトルとコンテンツのテキストは取得できますが、Tagオブジェクトはありません。 どのように私はそれを達成することができますか?前もって感謝します。
あなたのコレクションプロパティがTags
の名前(ない
Tag
)とそのコレクション以来、あなたは
Tag
オブジェクトの配列を渡す必要があり、例えば
var finalTagResultText = { .... , Tags: [{ tagName: "tname", tagDescription: "tdesc"}, { tagName: "tname1", tagDescription: "tdesc1"}]}`
サイドノートれる
感謝を使用することができます。それは私の問題を解決しました。アドバイスに関連して、私は、Ajaxコールを使ったデータの投稿はおそらく最良の方法ではないことを知っていますが、私のデータが別のAjaxコールで動的に取得される状況があります。だから私はそれらをHTMLヘルパークラスに置くことはできません。たぶんこのケースには良い解決策がありますが、私はどのように知っているのですか?乾杯:) –
その場合、あなたはajaxを使用する必要があるかもしれません(しかし、コードの残りの部分を知ることなく、最良のアプローチは何かを確かめることはできません) –