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

乔希

因此,从本质上讲,我正在构建Web API,并且尝试使用ajax查询接受两个参数的Web服务。我需要传递一个字符串列表(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对象放入data参数中吗?我也听说过我可以传递一个c-sharp对象,但是如果我尝试这样做,那么当我进入Razor代码时,我将无法访问html变量。

 @{ 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
}

谢谢大家。

y州

首先,为要发送的数据创建一个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 :)
});

是一篇详细解释将客户端数据发送到Web api的不同选项的文章。

我对url变量的值进行了硬编码。你应该考虑使用HTML辅助方法,如Url.Action在解释产生对你的应用程序端点正确的相对路径这一职位

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在jQuery Ajax中传递多个参数?

使用flask在URL中传递多个参数

在ajax中传递多个参数给我错误

了解python中的lambda并使用它传递多个参数

使用vuejs时如何在url中传递多个参数

使用$ implict传递多个参数

使用 VBA 传递多个参数?

资源控制器,使用AJAX传递多个参数

Razor Pages Javascript Ajax 未将参数传递给 c#

MVC Ajax 表单中是否可以有多个提交按钮并传递参数?

将ajax请求中的多个参数传递给函数后面的C#代码

在POST API中传递多个参数,而无需使用.Net Core MVC中的DTO类

如何使用 AJAX 结果更新 Master detail razor 页面中的模型

如何在ASP.NET Core 2.0中使用Razor页面处理Ajax请求

使用AJAX Get的.NET Core Razor Pages可以填充引导模态中的数据

使用OnPost页面处理程序处理Razor页面中的AJAX请求

Razor页面中的最佳实践:使用AJAX或Handlers处理发布/获取请求

使用Artisan :: call()传递非选项参数

如何传递多个参数并使用它们?

如何使用docopt传递多个参数

使用默认参数传递多个元组

使用xargs在命令中间传递多个参数

使用Rails无法通过Ajax请求中的url传递参数

使用Ajax和MVC在TextBox中传递参数

从输入框中使用jquery在ajax中传递参数

当我使用Python map(Fn,Iterable)时如何在Fn中传递多个参数?

水壶PDI如何传递表输入中未使用的多个参数

如何使用TypeScript将多个参数传递给Angular中的@Directives(@Components)?

如何在Laravel 5.1中使用url(路由)传递多个参数