ASP.NET MVC jQuery 自动完成与页面中包含的脚本中的 url.action 助手

Posted

技术标签:

【中文标题】ASP.NET MVC jQuery 自动完成与页面中包含的脚本中的 url.action 助手【英文标题】:ASP.NET MVC jQuery autocomplete with url.action helper in a script included in a page 【发布时间】:2011-02-02 22:43:51 【问题描述】:

我一直在构建我的第一个 ASP.NET MVC Web 应用程序。我一直在很多地方使用 jQuery 自动完成小部件,例如:

<head>
    $("#model").autocomplete( source: '<%= Url.Action("Model", "AutoComplete") %>' );
</head>

问题是我通过我的网络应用程序在许多不同的地方都有这个 jQuery 代码。所以我想我会创建一个单独的 javascript 脚本 (script.js),我可以在其中放置此代码,然后将其包含在母版页中。然后我可以将所有这些重复的代码放在那个脚本中,然后在我需要的地方调用它们。所以我做了这个。我的代码如下所示: 在 site.js 脚本中,我放置了这个函数:

function doAutoComplete() 
    $("#model").autocomplete( source: '<%= Url.Action("Model", "AutoComplete") %>' );

在我的页面上:

<head>
    <script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <script src="../../Scripts/site.js" type="text/javascript"></script>
    <script type="text/javascript">
        doAutoComplete();
    </script>
</head>

但是当我这样做时,我得到一个 Invalid Argument 异常并且自动完成不起作用。我究竟做错了什么?有什么想法吗?我需要向 doAutoComplete 函数传递一些东西吗?

【问题讨论】:

【参考方案1】:

解决方案:将 URL 作为参数传递给您的 javascript 函数。

<script>
    doAutoComplete('<%= Url.Action("Model", "AutoComplete") %>');
</script>

function doAutoComplete(url) 
    $("#model").autocomplete( source: url );

【讨论】:

【参考方案2】:

您需要将函数调用放在脚本块中,并确保在您的 site.js 之前加载 jquery ...

<head>
    <script src='path/to/jquery.js'></script>
    <script src="../../Scripts/site.js" type="text/javascript"></script>
    <script>
    doAutoComplete();
    </script>
</head>

编辑:

也许在函数被发送到浏览器之前,'' 标签没有在服务器端进行评估?这是一篇关于此的文章:http://www.west-wind.com/weblog/posts/252178.aspx

下面是这篇文章的引述:

如果需要也有问题 访问 [ASP.NET] 中的变量 .js 文件 - 你不能嵌入脚本 标记到 .js 文件中,因此得到一个 将动态值转换为静态文件是 有问题的

【讨论】:

对不起,当我试图简化我的问题的代码时,我拿出了太多东西。该调用位于脚本块中,并且 jquery 在 site.js 之前加载。我已经编辑了这个问题……谢谢你让我保持正确! :) 我不知道这是否是它与 asp.net 的工作方式(我是一个 php 人),但如果我想在服务器端评估 .js 文件中的某些内容,我有给文件一个 .php 扩展名。我将编辑我的答案以解释更多...

以上是关于ASP.NET MVC jQuery 自动完成与页面中包含的脚本中的 url.action 助手的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC jQuery 自动完成与页面中包含的脚本中的 url.action 助手

在asp.net mvc中删除数据成功后重新排序自动编号列JQuery Datatable

csharp 使用Typeahead与Asp.net MVC进行自动完成

ASP.NET Core MVC 自动完成部分视图不显示结果

ASP.NET MVC 和...YUI? jQuery?其他

带有 ASP.NET 问题的 Jquery 自动完成