转换为Mvc,ToolkitScriptManager ServiceReference

时间:2011-08-18 20:08:31

标签: asp.net asp.net-mvc ajaxcontroltoolkit webforms

所以,我正在使用混合Web应用程序/ mvc应用程序。尝试在MVC中完成所有新功能,并在有时间或需要时慢慢更改一些旧的webforms部件。使用Razor。

目前我正在尝试将一些旧的javascript引入mvc页面,而且我在使用ServiceReferences时遇到了一些麻烦。有没有办法让这些工作在Razor,我真的不想重写这个js文件,似乎它是1500行左右。

我有参考

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/4.0/1/MicrosoftAjax.js">   </script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/mvc/2.0/MicrosoftMvcAjax.js"></script>

我猜想必须有某种方法可以在某个地方写这个注册? 在webForms中,它的工作原理如下:

<ajaxToolkit:ToolkitScriptManager ID="cnvScriptManager" EnablePartialRendering="true" ScriptMode="Release" LoadScriptsBeforeUI="true" CombineScripts="true" CombineScriptsHandlerUrl="~/CombineScriptsHandler.ashx" runat="server">
                <Services>
                    <asp:ServiceReference Path="~/ux/controls/util.asmx" />
                    <asp:ServiceReference Path="~/ux/controls/menu/menu.asmx" />
                    <asp:ServiceReference Path="~/ux/controls/menu/list.asmx" />
                    <asp:ServiceReference Path="~/ux/controls/menu/tag.asmx" />
                    <asp:ServiceReference Path="~/ux/controls/canvas/filter/filter.asmx" />
                    <asp:ServiceReference Path="~/ux/controls/canvas/export/export.asmx" />
                </Services>
            </ajaxToolkit:ToolkitScriptManager>

然后在js你可以做这个荒谬的魔术:

Xyz.Api.ListUXService.Fill(listParams, onFillListSuccess, onFailure, List);

我希望有时间将其转换为jQuery和MVC,但是,我没有:)

1 个答案:

答案 0 :(得分:0)

在你的剃刀视图中添加对部分视图的引用,这个局部视图应该使用webforms视图引擎

<body>
    @Html.Partial("_ScriptManager")
</body>

然后将你的脚本管理器放在所述部分视图中

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<form id="form1" runat="server">
<ajaxtoolkit:toolkitscriptmanager id="myScriptManager" enablepartialrendering="true"
    scriptmode="Release" loadscriptsbeforeui="true" combinescripts="true" combinescriptshandlerurl="~/CombineScriptsHandler.ashx"
    runat="server">
                <Services>
                    <asp:ServiceReference Path="~/ux/controls/util.asmx" />
                    <asp:ServiceReference Path="~/ux/controls/menu/list.asmx" />
                    <asp:ServiceReference Path="~/ux/controls/menu/tag.asmx" />
                    <asp:ServiceReference Path="~/ux/controls/canvas/dialogs.asmx" />
                </Services>
</ajaxtoolkit:toolkitscriptmanager>
</form>

在所有mvc纯粹主义者生气之前,我想补充说我不建议这样做,这违背了MVC,但它有效,如果你没有时间改变大量的遗留代码,这里是解决方案。