簡體   English   中英

MVC - 通過JS將值傳遞給控制器

[英]MVC - Pass value to controller via JS

我有一個下拉

 <%=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) {}
    });
};

控制器代碼

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調用代碼,以便將正確的值傳遞給控制器​​。

您在Ajax請求中發布的值的參數名稱與Action參數名稱不匹配。 selectedValue應該是genreName

改變這個:

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

對此:

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

要使模型綁定正常運行,傳遞的json對象的字段名稱應與控制器操作的參數名稱匹配。 所以,這應該工作

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

你有很多不必要的引用,也沒有在你的行動中返回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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM