我们有一个由数百页组成的经典ASP内部网.它的目录结构如下所示......
/root
app_1
app_2
...
img
js
style
Run Code Online (Sandbox Code Playgroud)
显然app_1等在实际目录结构中有更好的名称.
尽管许多应用程序具有不同的行为,但它们都是同一内部网的一部分,因此通过/ style包含样式表,通过/ img包含图像,通过/ js包含客户端脚本,共享一个共同的外观和感觉.
当我想在ASP.NET中添加Intranet应用程序时,麻烦(至少对我而言)来了.
最终,我想要这个结构:
/root
app_1
app_2
dotnetapp_1
dotnetapp_2
...
img
js
style
Run Code Online (Sandbox Code Playgroud)
在我看来,ASP.NET"应用程序"喜欢将自己视为与周围的一切分开(这可能仅仅是我对它们的理解).您在Visual Studio中创建一个新的"项目",就好像您有一个新的"根"级别低于我想要使用的实际根目录.这就像这个新的应用程序是一个独立的东西,有自己的图像和风格等等.但是,我希望它是现有内部网的子部分.
最终我希望能够使我的整个经典ASP内联网成为"根"并拥有仍然可以访问/样式和/ img的ASP.NET"子应用程序",我想对于ASP.NET我将拥有/ masterpages .
我之前尝试过这个,但是当我将现有的Intranet根目录改为ASP.NET项目根目录时(通过File-> Open->),我认为VS在几百个经典的ASP页面上窒息了它添加到"项目"中网站).我很高兴使用VS 2008 SP1编辑我现有的经典ASP内部网(我目前使用优秀的Notepad ++),因为我想更多地使用VS,但我想这不是绝对必要的.
我还尝试将每个新的ASP.NET应用程序本身视为一个应用程序,有效地使/ dotnetapp_1目录成为应用程序的"根"(同样,通过VS2008中的File-> Open-> Web站点).然而,当我尝试引用/ masterpages时,VS然后抱怨,因为它"属于另一个应用程序".我想通过在每个ASP.NET目录中添加一个"指向"root/masterpages的虚拟目录来克服它,但我不确定VS是否能够愉快地提供WYSIWYG编辑,而不是制作副本我添加到Intranet的每个ASP.NET应用程序中的母版页.
我也很有可能访问.NET MVC框架,所以请记住该框架的任何答案.我希望"项目"对于MVC来说并不重要,而只是它只是一堆文件创建了一个有助于整个(作为内部网)的应用程序.
所以,问题是:我如何最好地将ASP.NET应用程序添加到现有的经典ASP内部网(我不关心经典ASP和ASP.NET之间的会话共享的技术性,只关注目录的结构布局和项目)并能够在Visual Studio 2008 SP1中编辑这些单独的应用程序,并使这些应用程序通过通用的Intranet外观相互"相关"*?
我有以下C#,它只是将看起来像EQUIP:19d005的输入字符串部分替换为URL,如下所示:
input = Regex.Replace(input, @"(EQUIP:)(\S+)", @"<a title=""View equipment item $2"" href=""/EquipmentDisplay.asp?eqnum=$2"">$1$2</a>", RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)
HTML最终看起来像这样.
<a title="View equipment item 19d005" href="/EquipmentDisplay.asp?eqnum=19d005">EQUIP:19d005</a>
Run Code Online (Sandbox Code Playgroud)
唯一的麻烦是目标页面要求eqnum查询字符串全部为大写,因此它在eqnum = 19D005时返回正确的设备,但如果收到eqnum = 19d005则失败.
我想我可以修改和纠正EquipmentDisplay.asp对大写值的错误要求,但是,如果可能的话,我想通过在上面的Regex.Replace语句中大写$ 2来使C#代码符合现有的经典ASP页面.
理想情况下,我希望返回的HTML看起来像这样:
<a title="View equipment item 19d005" href="/EquipmentDisplay.asp?eqnum=19D005">EQUIP:19d005</a>
Run Code Online (Sandbox Code Playgroud)
请注意,虽然原始字符串是EQUIP:19d005(小写),但只有eqnum =值是大写的.
它可以做到,如果是这样,最干净的方法是什么?
我刚看到即将推出的Windows 7的一个非常有用的UI功能(访问http://www.gizmodo.com.au/2008/10/windows_7_walkthrough_boot_video_and_impressions-2.html并向下滚动到名为Super Window Video of New Window Resizing的视频特征)
简而言之,您可以通过标题栏将窗口拖动到屏幕顶部以使其最大化,将其向下拖动以恢复并将其拖动到屏幕的左边缘或右边缘以使其对齐到位在你拖动它的边缘,并调整大小以占据屏幕的一半.
现在我知道有一堆基于键盘的应用程序做"类似"的事情,但我没有看到基于鼠标的程序只做上述,简单,有用,仅此而已.如果你知道一个(或者足够聪明写一个)请发布网址:)
无论如何,如果我想尝试编写一个小应用程序来执行此操作,我有一个问题:
如果我想尝试编写一个小应用程序来执行此操作,我可以将其编写为.NET应用程序吗?我想连接到Windows的窗口拖放处理是相当低级的,也许不是可以在C#.NET中完成的事情?
这里有哪些聪明人可以在他们的午餐时间敲出这样的小应用程序?;)我确信任何模仿Windows 7功能的东西都会非常受欢迎,至少在Windows 7推出之前.
编辑: AeroSnap人(http://www.aerosnap.de/index_eng.htm)在实现此功能方面做得很好,并根据下载次数判断,这是一个受欢迎的功能!