我有一个使用经典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。
感谢您的建议!
答案 0 :(得分:1)
由于您希望使用服务器控件,例如<asp:ScriptManager>
和<asp:UpdatePanel>
,它们会阻止ASP.NET MVC运行。
我会使用ASP.NET WebForms,因为你只想更新页面的一部分,那么对服务器的AJAX调用肯定是要走的路。您可以使用UpdatePanel
,但这可以部分回发到服务器,但用户看来只更新了一个或多个页面。
我的建议是使用ASP.NET AJAX页面方法,原因如下:
以下是使用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
,因为它不是页面实例,因此不参与页面生命周期,也不能访问任何页面控件。它只是作为服务器上的异步端点获取数据并将其返回给调用客户端。