JS调用C#补充
前面的Blog中对JS调用C#做了一个简单说明,其中要是ASPX页面中添加一个ScriptManager控件,但是这种做法在ASP.NET MVC中是不可行的,下面对其不可行原因以及解决方案做一个简要说明。
1. ScriptManager的作用
前面的Blog中,是利用ScriptManager引用了一个WCF的WebService,其代码如下:
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/Service.svc"/>
Services>
asp:ScriptManager>
<asp:ServiceReference Path="~/Service.svc"/>的作用在表面上看来是引用WebService,但是实际是在页面展现的时候,根据此WebService路径生成JS的代理类。然后再添加一个JS代码的引用,生成的HTML代码如下所示:
在ASP.NET中使用ScriptManager会出现问题,是由于ScriptManager是System.Web.UI.WebControls下面的一个类,说白了它是WebForm的一个组件,在ASP.NET MVC下根本没有WebForm的概述,自然也就会出现问题了。
2. 在ASP.NET MVC模式下的解决方案
根据上面的解释,我们可以非常简单的解决这个问题,如果不使用ScriptManager,可以直接在页面里添加JS代理类的引用,如下所示:
<script type="text/javascript" src ="Service.svc/js">script>
但是对代理类的访问一定要放在Window.OnLoad之后才行!