У меня есть приложение, которое использует $ .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;
}
}
Кто-нибудь имеет какие-либо идеи о том, что вызывает ошибку кодирования?