在Razor中的Ajax发布请求期间发布数据丢失

时间:2013-12-04 08:32:23

标签: asp.net-mvc-3 request

我正在使用razor视图引擎开发ASP.net MVC 3.0应用程序。

我正在制作ajax帖子如下:

 $.ajax({
       type: "post",                                                                  contentType: "application/json;charset=utf-8",
       url: GetErrorCountUrl,
         success: function (data) {
           });

此处,URL如下:

var GetErrorCountUrl = '@Url.Action("GetErrorCount", "WError", new { Id= "Token", id1 = "Token1", id2= "Token2" })';
GetErrorCountUrl = GetErrorCountUrl.replace('Token',pkid).replace('Token1',cid).replace('Token2',itemclass);

我正在构建正确的网址。我使用alert(url)进行了检查。它正在击中控制器动作。

在我的控制器动作中,

如果我这样做:Request.params [“Id”] - >我得到了正确的值

         Reuqest.params["id1"] --> I am getting null values

但是,当我这样做时:

       reuqest.Params[0] --> correct value

       request.params[1]  ---> Correct value

使用索引而不是名称时,我得到了正确的值。

我需要根据参数名称而不是索引来获取这些值。

请帮忙。

除第一个参数外,我无法获取其他参数的值

1 个答案:

答案 0 :(得分:0)

首先,变量的名称应该以JavaScript中的低位字母开头。具有第一个大写变量的名称应仅用于类(构造函数中使用的函数)。在stackoverflow上使用的代码的格式化使用其他颜色的JavaScript类。例如,要在JavaScript中定义数据,应使用var d = new Date();而不是var d = new Date();。所以像var GetErrorCountUrl = "some string";这样的代码看起来很奇怪。我知道JavaScript不是您的主要语言,但使用该语言时使用的名称转换效果会更好。

现在回到你的主要问题。在我看来

GetErrorCountUrl.replace('Token',pkid).replace('Token1',cid).replace('Token2',itemclass);

不是你真正想要的。如果字符串GetErrorCountUrl包含'Token1',那么子字符串'Token'的{​​{1}}部分将首先替换为'Token1',然后替换为pkid })永远不会工作。

要解决此问题,您可以将订单或替换更改为以下内容,例如:

cid