我刚刚开始与一家使用ASP .NET编写Web应用程序的公司合作,但该公司未使用Web API或MVC或Winforms。严格来说,它只是原始的原始ASP .NET。
大多数网络方法如下:
void Page_Load(Object sender, EventArgs e)
{
AuthContext ac = AuthSession.ValidateSession(HttpContext.Current);
if (ac.HasPrivilege((int)UserPrivilege.KeyReporting))
{
XmlTreeBuilder xtb = new XmlTreeBuilder("Root");
// code to build xml tree goes here
divContent.InnerHtml = WebUtil.XslTransform(xtb.GetXmlReader(),
Server.MapPath("kpiSummary.xsl"));
}
else
{
divContent.InnerHtml = "Access denied";
}
}
为了在这里完成,页面的html(ish)部分看起来像这样:
<asp:Content id="MainContent" ContentPlaceHolderID="MainContent" Runat="Server">
<div id="divContent" runat="server"></div>
</asp:Content>
因此,如果这是MVC,则通过编写自定义AuthorizationAttribute来创建如下所示的代码,将C#代码重构为将所有授权逻辑仅粘贴到可重用的数据属性中就没有问题了。>
[HasPrivilege(Name = UserPrivilege.KeyReporting, FailMessage = "Access denied"))]
void Page_Load(Object sender, EventArgs e)
{
XmlTreeBuilder xtb = new XmlTreeBuilder("Root");
// code to build xml tree goes here
divContent.InnerHtml = WebUtil.XslTransform(xtb.GetXmlReader(),
Server.MapPath("kpiSummary.xsl"));
}
所以我想问题是“在ASP .Net中甚至可能吗?如果可以,我该如何解决?”
我知道显而易见的答案是“用MVC重写整个应用程序”,但目前还不现实。因此,请不要让我为我的技术栈感到困难。我只是想发挥我的能力。
答案 0 :(得分:0)