【问题标题】:Razor MVC 3 Ajax returns 404Razor MVC 3 Ajax 返回 404
【发布时间】:2016-09-28 20:08:26
【问题描述】:

我正在尝试通过 jquery AJAX 进行基本的自动完成,使用 Razor MVC 3 和 Visual Studio 2012(我以前从未使用过所有这些)我的代码如下

JS:

$(document).ready(function () {        
    $("#city").keyup(function () {
        var input = $(this).val();
        getCities(input);
    });
});

function getCities(input) {
    var serviceURL = $("#autocompleteURL").val();    
    var url =
        $.ajax({
            type: "POST",
            url: serviceURL,
            data: {
                'guess': input
            },
            success: function (data) {
                alert('OK!!');    
            },
        });
}

由于我了解到无法在 JS 文件中使用 Razor 语法,因此我通过隐藏输入从视图中获取值,例如:

<input type="hidden" id="autocompleteURL" value="@Url.Action("AutoCompleteCity", "Controllers/SearchController")" />

控制器:

 public class SearchController: Controller
   {
       public ActionResult AutoCompleteCity(string guess)
        {
            //database stuff here
        }
   }

我不知道我是否缺少其他东西。任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 必须是@Url.Action("AutoCompleteCity", "Search"),但不要添加隐藏输入。在带有id="city" 的元素中,使用data-url = "@Url.Action("AutoCompleteCity", "Search")" 添加数据属性并使用var url = $(this).data(url); 检索它

标签: asp.net ajax asp.net-mvc-3 razor autocomplete


【解决方案1】:

控制器名称的约定只是控制器的语义名称,而不是文件路径。而不是这个:

Url.Action("AutoCompleteCity", "Controllers/SearchController")

试试这个:

Url.Action("AutoCompleteCity", "Search")

(另请注意,您可以使用浏览器中的调试工具来检查 AJAX 调用中使用的 URL。)

【讨论】:

    猜你喜欢
    • 2012-08-10
    • 2012-02-01
    • 2015-05-06
    • 2016-07-17
    • 2011-08-03
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    相关资源
    最近更新 更多