我在名为“ProductController”的 Controller 中有以下方法:
public ActionResult LoadProducts(int prodID)
{
return View();
}
我试图通过这种方式从 View cshtml 页面触发它:
@section Scripts {
<script type="text/jscript">
$('#MyProducts').change(function () {
var selectedID = $(this).val();
$.get('/Product/LoadProducts/' + selectedID, function (data) {
window.alert(selectedID);
});
});
</script>
}
<div>
@using (Html.BeginForm("Update", "Product", FormMethod.Post, new
{ enctype = "multipart/form-data" }))
{
@Html.DropDownList("MyProducts",
(IEnumerable<SelectListItem>)ViewBag.MyProducts as
IEnumerable<SelectListItem>, "Select")
}
</div>
当我更改下拉列表中的值时,对 jquery 的调用有效,因为我通过弹出框测试了它,但让它触发 Controller 中的操作方法不起作用。
谢谢。
最佳答案
在 Controller 中,您可以使用HttpGetAribute
来定义路由。如果不指定路由,则该参数被视为可选参数,应将其调用为 Product/LoadProducts?prodId=1
。 HttpGetAttribute
示例:
[HttpGet("[controller]\[action]\{prodId}")]
public ActionResult LoadProducts(int prodID)
{
return View();
}
关于javascript - MVC Controller 方法不被 View 中的 jquery 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46940034/