2014-09-02 62 views
0

我试图从jquery传递一个mvc控制器的参数,但该方法正在接收空值,即使调试器显示浏览器中两个控件的val()调试器存在。从jquery传递多个参数到mvc控制器

$(function() { 
    $('#Counties').cascade({ 
     data: JSON.stringify('{state: ' + $("#States").val() + ', county: ' + $("#Counties").val() + '}'), 
     url: '@Url.Action("GetCities")', 
     childSelect: $('#Cities') 
    }); 
}); 

enter image description here

我想在下面的一个答案有JSON.stringify和没有这两种方法。该值仍跨为空

enter image description here

来到这里是更新的代码。我在另一篇文章上看到,我可能需要为该方法编写一个Route。我补充说,但没有工作,要么

$(function() { 
    $('#Counties').cascade({ 
     data: {state: $("#States").val(), county: $("#Counties").val()}, 
     url: '@Url.Action("GetCities")', 
     childSelect: $('#Cities') 
    }); 
}); 


[HttpGet] 
public ActionResult GetCities(string state, string county) 
{ 
    var cities = _carrierRouteAssignmentRepository.GetCities(state, county); 
    return Json(cities, JsonRequestBehavior.AllowGet); 
} 

routes.MapRoute(
    name: "GetCities", 
    url: "{controller}/{action}/{state}/{county}", 
    defaults: new { controller = "CarrierRouteAssignments", action = "GetCities", state = UrlParameter.Optional, county = UrlParameter.Optional } 
    ); 

运行小提琴手我看到请求走出去作为

/CarrierRouteAssignments/GetCities?undefined=LOS+ANGELES 

这是不正确

+3

尝试将实际JavaScript对象传递给'JSON.stringify'而不是字符串 – Catalin 2014-09-02 12:40:12

回答

0

我才意识到了什么问题。我正在使用这个post的帮助器方法,并没有看到这个问题。我也没有在原来的问题中发布这个。你会注意到helper方法只需要1个参数,并且这个参数是传递给helper的参数。我将要么扩大这个帮手,要么绕过最后一个dropdownlist级联。感谢所有的投入。它确实清除了一个问题。

(function ($) { 
    $.fn.cascade = function (options) { 
     var defaults = {}; 
     var opts = $.extend(defaults, options); 

     return this.each(function() { 
      $(this).change(function() { 
       var selectedValue = $(this).val(); 
       var params = {}; 
       params[opts.paramName] = selectedValue; 
       $.getJSON(opts.url, params, function (items) { 
        opts.childSelect.empty(); 
        $.each(items, function (index, item) { 
         opts.childSelect.append(
         $('<option/>') 
          .attr('value', item) 
          .text(item) 
        ); 
        }); 
       }); 
      }); 
     }); 
    }; 
})(jQuery); 
1

你应该通过一个目的是JSON.stringify()方法,目前你传递字符串

使用

data: JSON.stringify({ 
    state: $("#States").val() , 
    county: $("#Counties").val() 
}), 

代替

data: JSON.stringify('{state: ' + $("#States").val() + ', county: ' + $("#Counties").val() + '}'), 
0

试试下面

$(function() { 
    $('#Counties').cascade({ 
     data:{ state: $("#States").val() , county: $("#Counties").val() }, 
     url: '@Url.Action("GetCities")', 
     childSelect: $('#Cities') 
    }); 
}); 
相关问题