【问题标题】:Getting data from javascript function on to ASP.NET MVC Controller's Action Method从 javascript 函数获取数据到 ASP.NET MVC 控制器的操作方法
【发布时间】:2017-08-18 14:54:31
【问题描述】:

我查看了许多关于 SO 的帖子以了解我的情况,但收效甚微。我正在尝试将数据从 javascript 函数 (DropdownChange()) 发送到 MVC 控制器 Action 方法,作为基于视图上选择的下拉值的参数。这是我的代码:

在 .cshtml 中 //下拉代码 ....其次是 //创建新计划的代码

 <a href="@Url.Action("ActionMethod")">
           <i class="sth" id="sth" Title="Create"></i>
      </a>

在 .JS 文件中,获取下拉更改值的函数

  function DropdownChange(){
       var Value = parseInt($("#dropDownId").val());
        $.ajax({
           type: "POST",
           url: '@ Url.Action("ActionMethod", "Home")',
           contentType: 'application/json; charset=utf-8',
           dataType: "json",
           data: {data : JSON.Stringify(Value)},
           success: function (data) {
                    alert('success');
                },
           error: error: function (result){
                  alert('error');
                }
           });

这是我的控制器操作方法

     [HttpPost]
     public ActionResult  ActionMethod(string Value)
     {
         // do something with Value     
     }

我得到的只是错误警报消息和 JS 运行时错误以及 Value 参数的空值。任何人都可以在这种情况下帮助我。 提前致谢。

【问题讨论】:

  • #dropDownId 是什么类型的元素,它的值是多少?此外,您可能应该在 AJAX 请求中发送 data: { value: Value }
  • 请添加js错误信息
  • data: Value 应该足够了,我认为
  • 只需简单地尝试data: Value 并删除contentType: 'application/json; charset=utf-8',,它应该没有必要。您不是在发送 JSON,也不是在发送字符串,而是在发送一个简单的整数。理想情况下,控制器方法应该接受int,因为通过在客户端上使用parseInt,我可以清楚地看到意图是发送一个int。这将有助于验证输入。
  • 什么错误?在您的问题中显示相关信息,包括您的 &lt;select&gt; 的 html 以及您如何调用该函数。以及它的data: { Value: $("#dropDownId").val() } 并删除contentType: 'application/json; charset=utf-8',(如果值为int,则参数应为int value

标签: javascript c# jquery ajax asp.net-mvc


【解决方案1】:

试试

$.ajax({
           type: "POST",
           url: '@ Url.Action("ActionMethod", "Home")',
           contentType: 'application/json; charset=utf-8',
           dataType: "json",
           data: JSON.stringify({data: Value}),
           success: function (data) {
                    alert('success');
                },
           error: error: function (result){
                  alert('error');
                }
           });   

$.ajax({
           type: "POST",
           url: '@ Url.Action("ActionMethod", "Home")',
           contentType: 'application/json; charset=utf-8',
           dataType: "json",
           data: Value,
           success: function (data) {
                    alert('success');
                },
           error: error: function (result){
                  alert('error');
                }
           });

【讨论】:

  • 如果您解释一下为什么此代码应该解决问题,以及您的两个选项之间的区别是什么,这对未来的读者会有帮助
猜你喜欢
  • 2017-02-06
  • 2019-01-26
  • 1970-01-01
  • 2019-12-02
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
  • 2019-03-30
  • 2019-03-28
相关资源
最近更新 更多