【问题标题】:Pass data between JavaScript and C# Controller : Asp.Net MVC 4 Razor在 JavaScript 和 C# 控制器之间传递数据:Asp.Net MVC 4 Razor
【发布时间】:2014-07-01 19:01:30
【问题描述】:

我想在视图和控制器之间传递数据。我做错了什么,因为它不起作用。

JavaScript 前端代码:

$.ajax({
    url: '@Url.Action("GetOid","SearchPerson")',
    data:  {oid : 1},
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    success: function (data) {
        // return values 
        console.log("Success!" + data.oid); 
    },
    error: function () { console.log('error!!'); }
});

C# 控制器代码:

    int CustomerId=0;

    [HttpPost]
    public ActionResult GetOid(int Oid)
    {

        // some code here to assign the value to a global var.
        CustomerId = Oid;

        ViewBag.id = Oid;


        return Json(new { oid = CustomerId });
    }

    });

【问题讨论】:

    标签: c# javascript asp.net-mvc-4 razor


    【解决方案1】:

    Javascript 对您在服务器上设置的变量一无所知。您需要像这样将 json 返回给客户端:

     return Json(new { oid = CustomerId });
    

    【讨论】:

    • 谢谢! @内森·安德森
    【解决方案2】:

    使用

    public JsonResult GetOid(int Oid)
    

    正确设置响应头

    【讨论】:

      【解决方案3】:

      这让很多新手感到困惑,

      console.log("Success!" + **data.Data.oid**);
      

      你应该学习浏览器端的fire debugger,看看你在watch window上关心的问题。

      【讨论】:

      • 我使用 firebug,但我在 chrome 和 ie 中进行测试。是的,我是新手。
      【解决方案4】:

      对您的 ajax 数据属性进行此更改。它需要作为字符串传递。

      data: JSON.stringify({ "Oid": 1 }),
      

      您的控制器参数和数据参数也需要相同。是区分大小写的。

      public ActionResult GetOid(int Oid)
      

      最后提到的以 json 格式返回它。

      return Json(new { oid = CustomerId });
      

      【讨论】:

      • 非常感谢! @nazmoonnoor
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 2013-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多