1

我有一个使用经典 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。

感谢您的建议!

4

1 回答 1

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,因为它不是页面实例,因此不参与页面生命周期,也无权访问任何页面控件。它只是作为服务器上的异步端点来获取数据并将其返回给调用客户端。

于 2013-11-14T01:14:35.493 回答