[英]ASP.NET MVC jQuery autocomplete with url.action helper in a script included in a page
我一直在构建我的第一个ASP.NET MVC Web应用程序。 我一直在许多地方使用jQuery自动完成小部件,例如:
<head>
$("#model").autocomplete({ source: '<%= Url.Action("Model", "AutoComplete") %>' });
</head>
关键是我的Web应用程序在许多不同的地方都有此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>
但是,当我这样做时,我收到一个无效的参数异常,并且自动完成功能不起作用。 我究竟做错了什么? 有什么想法吗?我需要传递一些东西给doAutoComplete函数吗?
<%=不会在您的外部javascript中进行评估。
解决方案:将URL作为参数传递给您的javascript函数。
<script>
doAutoComplete('<%= Url.Action("Model", "AutoComplete") %>');
</script>
function doAutoComplete(url) {
$("#model").autocomplete({ source: url });
}
您需要将函数调用放在脚本块中,并确保在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
这是该帖子的引文:
如果您需要访问.js文件中的[ASP.NET]变量,也会出现问题-无法将脚本标签嵌入.js文件中,因此将动态值获取到静态文件中会遇到问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.