0

ここにコントローラーがあります

public ViewResult AddNewRow(ProjectBudgetModel model)
{
   //Some oprations goes here on the passed model the return to the same view 
   return View("AddNewProjectBudget", model);
}

これは、次のようなajax呼び出しを持つビューです

$.ajax({
            url: '@Url.Action("AddNewRow", "ProjectBudget")',
            type: 'post',
            data: {model: '@Model'},
            contentType: 'application/json; charset=utf-8;',
            dataType: 'json',
            success: function (response) {
                alert(response.success)
                return;
            },
            error: function (x) {                
                alert(x.status);
            }
        });

ajax 呼び出しのデータ ヘッダーで渡される @Model は ProjectBudgetModel です。

特にコントローラーにデータを渡しているときに何か問題が発生し、コントローラーの addNewRow 関数のブレークポイントに到達しません

助けはありますか?

4

2 に答える 2

2
data: {model: '@Model'},

あなたが思っていることをまったくしません。生成されたマークアップを見て、壊れた値がいくつか出力されていることを確認してください。

次のようになります。

data: JSON.stringify(@Html.Raw(Json.Encode(Model))),

このJSON.stringifyメソッドは、最新のブラウザーにネイティブに組み込まれています。何らかの理由で石器時代のブラウザーをサポートする必要がある場合は、メソッドを定義するjson2.jsスクリプトをページに含めることができます。

于 2013-01-13T12:53:14.233 に答える
0

ビューからコントローラーのモデルにデータを送信できる唯一の方法は、次を使用することでした。

data: $("#FORM_ID").serialize(),

data:JSON.stringify(@Html.Raw(Json.Encode(Model))),コントローラは空のモデルを受け取ります。

于 2015-10-08T10:49:27.357 に答える