Jquery 我可以把ASP.NET放在Js文件中吗?
我正在做一个ajax Post操作,我需要计算出我的操作的URL 要做到这一点,我正在使用Jquery 我可以把ASP.NET放在Js文件中吗?,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我正在做一个ajax Post操作,我需要计算出我的操作的URL 要做到这一点,我正在使用 var url = '<%= Url.Action("Action", "Controller") %>'; 但这段代码存在于一个相当大的Js文件中,该文件正在加载到我的MVC视图中。我不想把它全部移到我的视野中,因为它太大了,看起来会一团糟 我尝试将我的JS include设置为runat=server,但这是错误的 <script runat="server" src="&l
var url = '<%= Url.Action("Action", "Controller") %>';
但这段代码存在于一个相当大的Js文件中,该文件正在加载到我的MVC视图中。我不想把它全部移到我的视野中,因为它太大了,看起来会一团糟
我尝试将我的JS include设置为runat=server,但这是错误的
<script runat="server" src="<%: ResolveUrl("~/Scripts/Custom/MyScript.js")%>" type="text/javascript" ></script>
这能做到吗
谢谢,
Kohan不,您不能将ASP.NET放入javascript文件中。Javascript文件是静态资源,应该由web服务器直接提供服务。它们不应该包含任何服务器端语言。您可以在视图中将url定义为全局变量:
<script type="text/javascript">
var url = '<%= Url.Action("Action", "Controller") %>';
</script>
然后在javascript中,您可以:
$(function() {
$('#fooAnchor').click(function() {
$('#result').load(this.href);
return false;
});
});
所以根本不需要声明任何变量。另一个选项是定义一个javascript函数,该函数接受参数,以便您可以根据需要传递它
结论:将javascript文件视为可重用组件,明天您可能会将其插入基于Javaservlet的酷站点,并将其托管在CDN上。你甚至可以试着把它们转换成。不要试图将其与服务器端语言混合,因为这会导致一个强耦合、丑陋的代码标记汤。不,你不能将ASP.NET放入javascript文件中。Javascript文件是静态资源,应该由web服务器直接提供服务。它们不应该包含任何服务器端语言。您可以在视图中将url定义为全局变量:
<script type="text/javascript">
var url = '<%= Url.Action("Action", "Controller") %>';
</script>
然后在javascript中,您可以:
$(function() {
$('#fooAnchor').click(function() {
$('#result').load(this.href);
return false;
});
});
所以根本不需要声明任何变量。另一个选项是定义一个javascript函数,该函数接受参数,以便您可以根据需要传递它
结论:将javascript文件视为可重用组件,明天您可能会将其插入基于Javaservlet的酷站点,并将其托管在CDN上。你甚至可以试着把它们转换成。不要尝试将其与服务器端语言混合,因为这会导致一个强耦合、丑陋的代码标签汤。我最近使用的另一种方法是创建一个包含以下操作的对象:-
<script type="text/javascript">
Actions = {
Create: "<%= Url.Action("Create") %>",
Edit: "<%= Url.Action("Edit") %>",
GetGridData: "<%= Url.Action("GetGridData") %>"
};
</script>
然后在Javascript中使用它:-
$(celDiv).html("<a href=" + Actions.Edit + "/" + id + ">" + $(celDiv).text() + "</a>");
使用它很好,因为动作都包含在一个地方。我最近使用的另一种方法是创建一个包含动作的对象:-
<script type="text/javascript">
Actions = {
Create: "<%= Url.Action("Create") %>",
Edit: "<%= Url.Action("Edit") %>",
GetGridData: "<%= Url.Action("GetGridData") %>"
};
</script>
然后在Javascript中使用它:-
$(celDiv).html("<a href=" + Actions.Edit + "/" + id + ">" + $(celDiv).text() + "</a>");
使用它很好,因为所有操作都包含在一个地方。是的,您可以,但您可能不想 完全可以让asp.net管道处理js文件的请求,这只是在IIS中设置关联的一个例子。然而,它将与intellisense玩havok,并且可能会造成不必要的混乱
对于ajax帖子,我发现最好的方法是使用适当的action属性集写出表单。然后使用JS读取该属性。这样,如果更改表单的操作,JS也会更新。这也符合js是为了向页面添加功能,而不是完全定义它们的想法。是的,你可以,但你可能不想 完全可以让asp.net管道处理js文件的请求,这只是在IIS中设置关联的一个例子。然而,它将与intellisense玩havok,并且可能会造成不必要的混乱
对于ajax帖子,我发现最好的方法是使用适当的action属性集写出表单。然后使用JS读取该属性。这样,如果更改表单的操作,JS也会更新。这也符合js是为了向页面添加功能,而不是完全定义它们的想法。是的。你可以做,但你未来的自己说不要做。是的。你可以这样做,但你未来的自己说不要这样做。