如何将几个参数从jquery发送到我的Controller作为一个单一实体?

时间:2014-10-03 11:13:23

标签: jquery kendo-grid

我的应用程序中有一个Kendo网格。

这是我的Read方法

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);
                }

这是获取adittional数据的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 个答案:

答案 0 :(得分:0)

在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 =&GT; m.myfield);

答案 1 :(得分:0)

我设法弄明白了。这是一个映射变量的问题。

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
        };
    }