gpt4 book ai didi

json - 使用 $.get 和 @(Html.Raw(Json.Encode(model))) 发布复杂模型的编码问题

转载 作者:行者123 更新时间:2023-12-01 03:51:50 25 4
gpt4 key购买 nike

我有一个应用程序,它使用 $.get 在编辑页面和查看页面之间切换页面部分。

(在本示例中,我传递了整个模型,因为它使代码更易于阅读)

$.get(@(Html.Raw(Json.Encode(Url.Action("_Table")))),
@(Html.Raw(Json.Encode(Model))),
function (data) { $('#@(Model.Guid)').empty().append(data)}
);

问题是,虽然简单的属性(int、string 等)可以很好地传回操作,但任何复杂的对象都不会正确传回。

我使用 Request.QueryString.ToString() 来查看传递给操作的内容并已收到。

{Guid=e1207e1c-78b6-4592-ab49-3ab9fa43a0e3&ExecuteSearch=True&ShowSearch=True&AllowExport=True&SearchData%5bId%5d=0&SearchData%5bName%5d=tes&SearchData%5bHostname%5d=null&SearchData%5bDescription%5d=null&SearchData%5bisActive%5d=false}

我在期待

{Guid=0d7cfe4d-c75f-40fb-ba9a-faee58abfeaa&ExecuteSearch=True&ShowSearch=True&AllowExport=True&SearchData.Id=&SearchData.Name=tes&SearchData.Hostname=&SearchData.Description=}

注意“SearchData.Id”而不是“SearchData%5bId%5d=”

这是模型。

public class VM_List
{
public Guid Guid { get; set; }
public Boolean ExecuteSearch { get; set; }
public Boolean ShowSearch { get; set; }
public Boolean AllowExport { get; set; }
public Boolean MultiEdit { get; set; }
public String Title { get; set; }
public String NewText { get; set; } //If null then link is not shown
public dynamic SearchData { get; set; }
public dynamic Data { get; set; }

public VM_List(Guid Guid, Boolean ExecuteSearch, Boolean ShowSearch, Boolean AllowExport, Boolean MultiEdit, String Title, String NewText, dynamic SearchData, dynamic Data)
{
this.Guid = Guid;
this.ExecuteSearch = ExecuteSearch;
this.ShowSearch = ShowSearch;
this.AllowExport = AllowExport;
this.MultiEdit = MultiEdit;
this.Title = Title;
this.NewText = NewText;
this.SearchData = SearchData;
this.Data = Data;
}
}

有人对导致编码错误的原因有任何想法吗?

最佳答案

如果您想发送复杂的对象,可以使用 JSON 请求:

var url = '@Url.Action("_Table")';
var model = @Html.Raw(Json.Encode(Model));

$.ajax({
url: url,
type: 'POST',
data: JSON.stringify(model),
contentType: 'application/json; charset=utf-8',
success: function(result) {
$('#' + model.Guid).empty().append(result);
}
});

JSON.stringify 方法将 model javascript 模型变量序列化为要发送到 Controller 操作的 JSON 字符串。此方法本身内置于现代浏览器中,但如果您想支持旧版浏览器,您可能需要包含 json2.js将脚本添加到您的页面。

关于json - 使用 $.get 和 @(Html.Raw(Json.Encode(model))) 发布复杂模型的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7831270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com