MVC - 通过JS将值传递给控制器

时间:2012-05-21 14:49:16

标签: javascript asp.net-mvc asp.net-mvc-3

我有一个下拉

 <%=Html.DropDownList("genre", Model.genres, "", new { @onchange = ChangeMovie()" })%>

JavaScript看起来像(不完整)

function ChangeMovie() {
    var genreSelection = container.find( '#genre' ).val();

    $.ajax({  
        "url" : "/Movies/GetGenre" ,
        "type" : "get" ,
        "dataType" : "json" ,
        "data" : { "selectedValue" : $( "#genre").val() },
        "success" : function (data) {}
    });
};

Conrtroller代码

public ActionResult GetGenre(string genreName)
{
   //Need to get the `genreName` from the JavaScript function above.. which is
   // in turn coming from the selected value of the drop down in the beginning.

}

我想通过js函数将下拉列表的选定值传递给控制器​​代码中的操作结果。我需要帮助操作JavaScript代码和AJAX调用代码,以便将正确的值传递给控制器​​。

3 个答案:

答案 0 :(得分:3)

您在Ajax请求中发布的值的参数名称与Action参数名称不匹配。 selectedValue 应为 genreName

改变这个:

"data" : { "selectedValue" : $( "#genre").val() },

到此:

data : { genreName : $("#genre").val() },

答案 1 :(得分:3)

为使模型绑定正常运行,传递的json对象的字段名称应与控制器操作的参数名称匹配。所以,这应该工作

"data" : { "genreName" : $( "#genre").val() },

答案 2 :(得分:3)

你有很多不必要的引用,也没有在你的行动中返回JSON

$.ajax({
    url: "/Movies/GetGenre/",
    dataType: "json",
    cache: false,
    type: 'GET',
    data: {genreName: $("#genre").val() },             
    success: function (result) {
        if(result.Success) {
            alert(result.Genre);
        }
    }
});

另外,您的控制器没有返回Json,将您的操作修改为

public JsonResult GetGenre(string genreName) {
    // do what you need to with genreName here 
    return Json(new { Success = true, Genre = genreName }, JsonRequestBehavior.AllowGet);
}