Как я могу отправить несколько параметров из jquery в мой контроллер как один объект?

У меня есть сетка Kendo в моем приложении.

Это мой метод чтения

public virtual ActionResult ReadItems([DataSourceRequest]DataSourceRequest request, string Landbouwernummer = "", string Startjaaraanvraag = "", string Maatregel = "",
 string Pakket = "", string Startjaarverbintenis = "", string Eindjaarverbintenis = "",
 string Aanvraagtype = "", string Status = "", string Opmerkingen = "", string Lijst = "")
 {
 List<aanvragenzoekenviewmodel.zoekresultaat> resourceItemsList = new List<aanvragenzoekenviewmodel.zoekresultaat>();
 AanvragenZoekenViewModel.ZoekCriteria zoekCriteria = new AanvragenZoekenViewModel.ZoekCriteria
 {
 Landbouwernummer = Landbouwernummer,
 ...
 };


 return Json(resourceItemsList.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
 }
</aanvragenzoekenviewmodel.zoekresultaat></aanvragenzoekenviewmodel.zoekresultaat>

И это метод jquery для получения аддитивных данных

function onReadAdditionalData() {
 return {
 Landbouwernummer : $("#Landbouwernummer").klantenControl().getAlvNummer().toString(),
 Startjaaraanvraag : $("#Startjaaraanvraag").data("kendoMultiSelect").value().toString(),
 Maatregel : $("#Maatregel").data("kendoMultiSelect").value().toString(),
 Pakket : $("#Pakket").data("kendoMultiSelect").value().toString(),
 Startjaarverbintenis: $("#Startjaarverbintenis").data("kendoMultiSelect").value().toString(),
 Eindjaarverbintenis : $("#Eindjaarverbintenis").data("kendoMultiSelect").value().toString(),
 Aanvraagtype : $("#Aanvraagtype").data("kendoMultiSelect").value().toString(),
 Status : $("#Status").data("kendoMultiSelect").value().toString(),
 Opmerkingen : $("#Opmerkingen").data("kendoMultiSelect").value().toString(),
 Lijst : $("#Lijst").data("kendoDropDownList").value().toString()
 };
}

Я не очень хорошо разбираюсь в JQuery, так что это моя проблема.

Мне нужно повернуть это

public virtual ActionResult ReadItems([DataSourceRequest]DataSourceRequest request, string Landbouwernummer = "", string Startjaaraanvraag = "", string Maatregel = "",
string Pakket = "", string Startjaarverbintenis = "", string Eindjaarverbintenis = "",
string Aanvraagtype = "", string Status = "", string Opmerkingen = "", string Lijst = "")
{
...
}

в этот

public virtual ActionResult ReadItems([DataSourceRequest]DataSourceRequest request, AanvragenZoekenViewModel.ZoekCriteria zoekCriteria)
 {
...
}

Как я могу затем включить это

function onReadAdditionalData() {
 return {
 Landbouwernummer : $("#Landbouwernummer").klantenControl().getAlvNummer().toString(),
 Startjaaraanvraag : $("#Startjaaraanvraag").data("kendoMultiSelect").value().toString(),
 Maatregel : $("#Maatregel").data("kendoMultiSelect").value().toString(),
 Pakket : $("#Pakket").data("kendoMultiSelect").value().toString(),
 Startjaarverbintenis: $("#Startjaarverbintenis").data("kendoMultiSelect").value().toString(),
 Eindjaarverbintenis : $("#Eindjaarverbintenis").data("kendoMultiSelect").value().toString(),
 Aanvraagtype : $("#Aanvraagtype").data("kendoMultiSelect").value().toString(),
 Status : $("#Status").data("kendoMultiSelect").value().toString(),
 Opmerkingen : $("#Opmerkingen").data("kendoMultiSelect").value().toString(),
 Lijst : $("#Lijst").data("kendoDropDownList").value().toString()
 };
 }

в этот

function onReadAdditionalData() {
 return {
 **just one object**
 };
 }

То есть, как я могу отправить Landbouwernummer, Startjaaraanvraag и т.д., Как единое целое, что бы это ни было?

2 ответа

Мне это удалось разобраться. Речь шла о сопоставлении переменных.

public virtual ActionResult ReadItems([DataSourceRequest]DataSourceRequest request, AanvragenZoekenViewModel.ZoekCriteriaPostModel zoekCriteriaPosted) {
List<aanvragenzoekenviewmodel.zoekresultaat> resourceItemsList = new List<aanvragenzoekenviewmodel.zoekresultaat>();
AanvragenZoekenViewModel.ZoekCriteria zoekCriteria = new AanvragenZoekenViewModel.ZoekCriteria
{
 Landbouwernummer = zoekCriteriaPosted.Landbouwernummer,
 ...
};
return Json(resourceItemsList.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
 }


 function onReadAdditionalData() {
 var zoekCriteria = {
 Landbouwernummer: $("#Landbouwernummer").klantenControl().getAlvNummer().toString(),
 Startjaaraanvraag: $("#Startjaaraanvraag").data("kendoMultiSelect").value().toString(),
 Maatregel: $("#Maatregel").data("kendoMultiSelect").value().toString(),
 Pakket: $("#Pakket").data("kendoMultiSelect").value().toString(),
 Startjaarverbintenis: $("#Startjaarverbintenis").data("kendoMultiSelect").value().toString(),
 Eindjaarverbintenis: $("#Eindjaarverbintenis").data("kendoMultiSelect").value().toString(),
 Aanvraagtype: $("#Aanvraagtype").data("kendoMultiSelect").value().toString(),
 Status: $("#Status").data("kendoMultiSelect").value().toString(),
 Opmerkingen: $("#Opmerkingen").data("kendoMultiSelect").value().toString(),
 Lijst: $("#Lijst").data("kendoDropDownList").value().toString()
 };

 return {
 zoekCriteriaPosted : zoekCriteria
 };
 }
</aanvragenzoekenviewmodel.zoekresultaat></aanvragenzoekenviewmodel.zoekresultaat>


Создайте форму на странице aspx или cshtml с некоторым id = "myForm"

также создайте класс, который включает все те поля, которые форма содержит для ввода.

затем используйте следующий код в своем скрипте:

$.ajax{(
 url:"contorller/action",
 data:$("#myForm").serialize(),
 type:"get/post", // use one
 )};

И на стороне сервера сделайте следующее:

public void method(MyModel m)
{}

Здесь модель m является моделью для всех значений, которые поступают с страницы формы aspx или cshtml. также используйте html-помощники для связывания поля модели с текстовым полем, то есть: @Html.TextBoxFor(m => m.myfield);

licensed under cc by-sa 3.0 with attribution.