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 回答