javascript - MVC Controller 方法不被 View 中的 jquery 触发

标签 javascript c# jquery asp.net-mvc razor

我在名为“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=1HttpGetAttribute 示例:

[HttpGet("[controller]\[action]\{prodId}")]
public ActionResult LoadProducts(int prodID)
{
     return View();
}

关于javascript - MVC Controller 方法不被 View 中的 jquery 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46940034/

相关文章:

javascript - 你如何用空格和标点符号分割 javascript 字符串?

c# - 是否有可能完全防止 .NET Compact Framework 上的多个实例?

c# - 如何使用核心服务在 Tridion 2011 中创建新用户?

javascript - 滚动到页面上值 = 'x' 的位置

javascript - 有没有办法检测溢出 y :auto has been triggered, 并因此创建弹出窗口?

javascript - 从一组元素中获取一个元素作为 jQuery 对象

javascript - Vue.js 和观察者模式

javascript - 替换为 RegEx 和 JavaScript

javascript - 如何在 Angular 中读取在线 html 文档并转换为字符串

C# ImageBox 在 MouseUp 上清除矩形