2014-09-02 61 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') 
    }); 
}); 
相關問題