0

現在、ASP.NET MVC 4 で作業しています。JQuery を使用して、特定の状況でページの特定の部分をレンダリングしようとしています。このために、次の JQuery コードを作成しました。

var selectedLicense = '@Model.License';

        $.post("/Permission/LicenseConfigurationLabelOrCombobox", selectedLicense,
            function (responseText) { 
                $(".LicenseWizard").html(responseText);
            });

私のコントローラーには、次のアクションがあります。

public String LicenseConfigurationLabelOrCombobox(LicenseWithCharacteristicsModel license)
        {
          //Do Stuff
        }

ただし、私のアクション モデルは空のままです。何か新しいことを試すために、モデルで次のことを行いました。

public class PermissionLicenseConfigurationModel
    {
        public LicenseWithCharacteristicsModel License { get; set; }
        public string JsonLicense
        {
            get
            {
                return new JavaScriptSerializer().Serialize(License);
            }
        }
    }

JQueryも更新しました:

var selectedLicense = '@Model.JsonLicense';

        $.post("/Permission/LicenseConfigurationLabelOrCombobox", selectedLicense,
            function (responseText) { 
                $(".LicenseWizard").html(responseText);
            });

JQuery が実際のシリアル化されたオブジェクトを使用していることがわかりますが、アクション モデルはそれを取得しません。Id は常に 0 で、値は null です。

ヒントはありますか?

4

1 に答える 1

1

JsonLicenseビュー モデルからこのプロパティを削除することから始めます。

public class PermissionLicenseConfigurationModel
{
    public LicenseWithCharacteristicsModel License { get; set; }
}

ビュー内で、モデルを JSON リクエストとしてコントローラーに送信できます。

var selectedLicense = @Html.Raw(Json.Encode(Model.License));
$.ajax({
    url: '@Url.Action("LicenseConfigurationLabelOrCombobox", "Permission")',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(selectedLicense),
    success: function(result) {
        $(".LicenseWizard").html(result);
    }
});
于 2012-10-10T09:50:45.493 に答える