Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 我可以把ASP.NET放在Js文件中吗?_Jquery_Asp.net Mvc - Fatal编程技术网

Jquery 我可以把ASP.NET放在Js文件中吗?

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

我正在做一个ajax Post操作,我需要计算出我的操作的URL

要做到这一点,我正在使用

   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是为了向页面添加功能,而不是完全定义它们的想法。

是的。你可以做,但你未来的自己说不要做。是的。你可以这样做,但你未来的自己说不要这样做。