【问题标题】:Make an AJAX request using $.ajax in MVC 4在 MVC 4 中使用 $.ajax 发出 AJAX 请求
【发布时间】:2012-10-22 20:59:58
【问题描述】:

我正在尝试使用带有 Razor 的 MVC 4 中的 $.ajax 发出 AJAX 请求。我不确定如何实现它。

使用this video 我能够成功地进行返回数据的链接驱动调用,但我似乎无法从 jquery 函数内部执行相同的操作。我似乎找不到任何有关如何执行此操作的基本示例。 这就是我正在使用的:

HomeController.cs

        public string test(){
             return "It works";
        }

View.cshtml

function inventory(dealerID) {
    $.ajax({
        url: '@Url.Action("HomeController","test")',
        data: {dealerID: dealerID},
        type: 'POST',
        success: function(data) {
            process(data);
        }
    });
}

【问题讨论】:

    标签: ajax asp.net-mvc asp.net-mvc-4 razor


    【解决方案1】:

    您只需将其设为ActionResult。此外,如果您使用的是 Ajax POST,则需要使用 HttpPost 属性标记该操作。试试这个:

    [HttpPost]
    public ActionResult test(string dealerID)
    {
        return Content("It works");
    }
    

    编辑实际上,语法还有一些其他问题。

    1. Url.Action 的控制器/动作参数顺序错误——应该首先是“ActionName”,然后是“ControllerName”
    2. 对于Url.Action,如果控制器类是“HomeController”,那么您只需要“Home”
    3. JQuery 选项语法错误 -- 应该是 success: function(data) {}

    $.ajax({
        url: '@Url.Action("test", "Home")',
        data: {dealerID: dealerID},
        type: 'POST',
        success: function(data) {
            alert(data);
        }
    });
    

    【讨论】:

    • 在您的示例中,test() 方法如何从您发送的 JSON 中获取 dealerId?我是否应该假设它作为参数传递给方法,而您只是省略了它?
    • @crush 是的,完全正确。 MVC 路由系统足够灵活,可以从任何可用的地方提取控制器参数——查询字符串、发布数据或路由数据。
    • @McGarnagle:如何将 C# 代码添加到外部 js 文件中?我知道我可以在 html 文件中做什么,但不是在 js 文件中。
    • 您可以这样做(将其包含在路由系统中),但似乎不建议这样做。最好将外部依赖项从 JS 中分解出来;或者将依赖于 C# 的 JS 包含为内联脚本,或作为部分视图。
    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多