【问题标题】:Which type of ASP.Net (WebForms,MVC,Web Pages) best for adding one ASYNC page to Classic ASP site?哪种类型的 ASP.Net(WebForms、MVC、Web Pages)最适合将一个 ASYNC 页面添加到 Classic ASP 站点?
【发布时间】:2013-11-26 20:36:13
【问题描述】:

我有一个使用 Classic ASP 和 VBscript 构建的 CMS。

我想将注册页面转换为 ASPX 并使其以 ASYNC (AJAX?) 运行,这样人们就可以更改一个字段,并且该字段会自动更新数据库而不是整个页面。

最理想的情况是,我可以将会话变量从我的 .ASP 发送到该页面,但这不是必需的!重要的。我不想为了保留我的会话变量而选择错误的框架!我很乐意手动将 cookie 保存到用户的机器(甚至使用查询字符串),这样当他们打开 ASPX 注册页面时,它就知道正在与谁交谈。会话变量无论如何都依赖于 cookie,所以没什么大不了的。

哦!另一个因素:如果我可以在该页面上尽可能多地利用我现有的 Classic ASP 代码,那就太好了。 MVC 的优点是什么?而且...是 MVC,我可以在其中执行以下操作:

<asp:ScriptManager id... runat="server></asp:ScriptManager>
Use <UpdatePanel ... id... runat="server"> control.
    Async code goes here
    <ContentTemplate>

    </ContentTemplate>
</asp:UpdatePanel>  

好的...那么您推荐 WebForms、MVC 还是 Web Pages?我正在使用 Visual Studio 2012。

感谢您的建议!

【问题讨论】:

    标签: asp.net asp.net-mvc asp-classic webforms asp.net-ajax


    【解决方案1】:

    因为您想使用服务器控件,例如 &lt;asp:ScriptManager&gt;&lt;asp:UpdatePanel&gt;,它们会使 ASP.NET MVC 无法运行。

    我会使用 ASP.NET WebForms,因为您只想更新页面的一部分,那么对服务器的 AJAX 调用绝对是可行的方法。您可以使用UpdatePanel,但这会将部分回传到服务器,但在用户看来,只有一个或多个页面被更新。

    我的建议是使用 ASP.NET AJAX 页面方法,原因如下:

    • 您想对服务器使用 AJAX 调用; jQuery可以轻松调用页面方法
    • 您希望它只更新页面的一部分,页面方法只返回数据,然后客户端可以只更新它需要的内容,而根本不需要发回服务器

    这是一个使用 ASP.NET AJAX 页面方法的示例:

    标记:

    <asp:Label id="Label1` runat="server" CssClass="TheLabel" />
    <asp:Button id="Button1` runat="server" CssClass="TheButton" Text="Update Label" />
    
    <script type="text/javascript">
        $(document).ready(function() {
            $('.TheButton').click(function() {
                $.ajax({
                    type: "POST",
                    url: "PageName.aspx/GetDateTime",
                    data: "{}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(result) {
                        $('.TheLabel').text(result.d);
                    }
                });
    
                // Stop button from posting back to the server
                return false;
            });
        });
    </script>
    

    代码隐藏:

    [WebMethod]
    public static string GetDateTime()
    {
        return DateTime.Now.ToString();
    }
    

    注意:ASP.NET AJAX 页面方法必须是static,因为它不是页面实例,因此不参与页面生命周期,也无权访问任何页面控件。它只是作为服务器上的异步端点来获取数据并将其返回给调用客户端。

    【讨论】:

    • 谢谢!我的 SQL(插入/更新的执行)是否需要改变?对不起,如果这是一个愚蠢的问题。我超级累,对 ASP.Net 很陌生。
    • 还有。假设我可以更改: $('.TheButton').click(function() 到 $('.Label1').change(function() 以便我不依赖任何按钮点击,是吗?
    • 回到我的 SQL 问题。我是否只是将更新查询放在 中?
    • @ScotterMonkey - 如果您使用的是 ASP.NET AJAX 页面方法,那么将其放在 UpdatePanel 内部或外部都没有关系;但是,如果您使用常规的代码隐藏方法,那么您将希望将更新逻辑放在 UpdatePanel 内的单击事件处理程序中,否则您将失去 UpdatePanels 提供的 AJAX 效果的好处。请记住,尽管UpdatePanels 只能访问它自己或其他UpdatePanels 中的控件。这是因为UpdatePanel 也不会经历整个页面生命周期。
    • @ScotterMonkey - 继续......它确实经历了大部分生命周期。请注意,如果您在页面上放置太多UpdatePanels,性能将开始受到影响。许多人将UpdatePanels 视为穷人的AJAX。它非常易于使用,以至于人们往往会忘记它在幕后的真正用途。
    猜你喜欢
    • 2011-08-28
    • 2017-06-05
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2012-07-25
    • 1970-01-01
    相关资源
    最近更新 更多