哪种类型的ASP.Net(WebForms,MVC,Web Pages)最适合将一个ASYNC页面添加到Classic ASP站点?

时间:2013-11-14 00:43:09

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

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

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

最理想的是,我可以从我的.ASP向该页面发送Session变量,但这不是必需的!重要。我不想选择错误的框架只是为了保持我的会话变量!我很乐意手动将cookie保存到用户的机器上(甚至使用查询字符串),以便当他们拉出ASPX注册页面时,它知道它正在与谁通话。无论如何,会话变量都依赖于cookie,所以没有大事。

哦!另一个因素:如果我能尽可能多地利用该页面上现有的经典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还是网页?我正在使用Visual Studio 2012。

感谢您的建议!

1 个答案:

答案 0 :(得分:1)

由于您希望使用服务器控件,例如<asp:ScriptManager><asp:UpdatePanel>,它们会阻止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,因为它不是页面实例,因此不参与页面生命周期,也不能访问任何页面控件。它只是作为服务器上的异步端点获取数据并将其返回给调用客户端。