[英]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.