Я работаю над приложением C # MVC.Есть страница поиска с несколькими полями.Когда пользователь нажимает кнопку поиска, я хотел бы передать значения из полей поиска в json, в дополнение к стандартному датному json, в метод на стороне сервера, чтобы отфильтровать записи на основе этих значений поля поиска и отобразить эти результаты вТаблица.Я пробовал это несколькими способами, но поле поиска json никогда не достигает метода на стороне сервера.Я получаю параметры jquery, такие как iColumns, iDisplayLength, iSortCol_0 и т. Д., Но я не получаю поля поиска json.Я использую jquery datatable версии 1.10, я пробовал это в режиме совместимости следующим образом:
tblSearchResults = $('#tblSearchResults').dataTable({
"bServerSide": true,
"bFilter": true,
"sAjaxSource": '@Url.Action("GetSearchResults", "jQueryDataTable", new { area = "" }, this.Request.Url.Scheme)',
"fnServerData": function (sSource, aoData, fnCallback, oSettings) {
aoData.push(getSearchJson())
$.ajax({
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": aoData,
"success": fnCallback,
"error": function (e) {
ErrorDialog(e.Message, "Error");
}
})
}
});
В режиме совместимости я также пытался добавить объект в конец URL запроса:
"sAjaxSource": '@Url.Action("GetSearchResults", "jQueryDataTable", new { area = "" }, this.Request.Url.Scheme)?searchJson=' + getSearchJson(),
Я также попробовал с соглашениями об именах 1.10:
tblSearchResults = $('#tblSearchResults ').DataTable({,
"serverSide": true,
"searching": true,
"ajax": {
"url": '@Url.Action("GetSearchResults,", "jQueryDataTable", new { area = "" }, this.Request.Url.Scheme)',
"data": getSearchJson()
},
});
Функция javascript getSearchJson выглядит следующим образом:
function getSearchJson() {
var jsonObj = {
FirstName: $('#@Html.IdFor(m => Model.FirstName)').val() || '',
LastName: $('#@Html.IdFor(m => Model.LastName)').val() || '',
PhoneNumber: $('#@Html.IdFor(m => Model.PhoneNumber)').val() || '',
};
return JSON.stringify(jsonObj);
}
Вот то, что я пробовал на стороне сервераметод: режим совместимости с добавленным параметром url:
public ActionResult GetSearchResults(jQueryDataTableParamModel param, searchParamModel searchJson)
{ do search and return results}
searchJson всегда равен null
режим совместимости с fnServerData:
public ActionResult GetSearchResults(jQueryDataTableParamModel param)
{
string json = HttpUtility.UrlDecode(Request.GetJsonData());
inModel = Newtonsoft.Json.JsonConvert.DeserializeObject<searchParamModel>(json);
Я использовал этот же метод для DataTableс 1.10 соглашениями об именах.Похоже, это тот же json, что и у параметра jquery param, определенно не те поля поиска, которые я ищу json.
Я хотел бы отправить поиск json вместе со стандартным параметром jquery таблицы json.Как этого достичь?Я просмотрел много постов, но не нашел решения
Пожалуйста, помогите.Спасибо