使用Razor在Ajax Call中传递多个参数

时间:2016-05-05 22:09:22

标签: c# jquery ajax razor

基本上,我正在构建一个Web API,我试图使用ajax来查询接受两个参数的Web服务。我需要传递一个Stings列表(SSN),我需要传递一个字符串来确定它查询的环境。 (" a"用于接受," i"用于集成)。

我正在使用带有剃刀的cshtml。到目前为止,这一部分已经成功地向我提供了我想要的div。

var pInputSssns  = document.GetElementById(“SSNinput”).value;
var pTestRegion = document.GetElementById(“testRegion’).value;

然而,就在它下面。我试图将这两个参数插入到ajax调用中。

 $.ajax({
        type: 'GET',
        contentType: "application/json; charset=utf-8" 
        url: "myurl",
        data:"{}",
        success: function (data) {
            // populate a table
        }
    });

我听说过如何做到这一点的多种意见。我可以将它们作为JSON序列化,然后在数据参数中放入两个JSON对象吗?我也听说过我可以传递一个尖锐的物体,但如果我尝试这样做,我就无法访问html变量而我在Razor代码中。

 @{ AjaxParam ap = new AjaxParam(); ap.pInputSsns = pInputSsns;}

有没有一种好方法可以将它们都传递到那里?作为参考,这里是控制器:

[ScriptMethod (ResponseFormat = Response Format.Json)] 
[System.Web.Http.HttpGet]
public JArray GetSSNAssociations([FromUri] List <string> pInputSsns, string pTestRegion)
{
\\ do something
}

欣赏每个人。

1 个答案:

答案 0 :(得分:0)

首先,为要发送的数据创建一个DTO类。

public class SearchRequest
{
    public List<string> SsnList { set; get; }
    public string Environment { set; get; } 
}

现在,在WebApi控制器中,Post方法将此类作为参数,以便在客户端发送请求时,默认模型绑定器将能够将请求值映射到此类对象的属性。

public class ProductsController : ApiController
{
    public HttpResponseMessage Post([FromBody]SearchRequest req)
    {
       // I am simply returning the same object back. But you can do whatever you want
       // Check req.SsnList and req.Environment properties and do something useful.
        return Request.CreateResponse(HttpStatusCode.OK, req);
    }
}

现在从客户端代码,您可以构建一个javascript对象,它重命名我们的DTO类的结构,并使用jQuery ajax发送它。

var model = { Environment: "I",  SssList: ["375329567", "3583345"] };
var url="../api/products";
$.ajax({
    type: "POST",
    data: JSON.stringify(model),
    url: url,
    contentType: "application/json"
}).done(function (res) {
    console.log('res', res);
    // Do something with the result :)
});

Here是一篇文章,解释了将客户端数据发送到web api的不同选项。

我硬编码了url变量的值。您应该考虑使用Url.Action等Html辅助方法生成应用端点的正确相对路径,如this post中所述。