aspx 2 cs ?

fxw 2005-05-28 02:06:47

请问有谁知道 转换aspx 到 cs 的方法或工具?
...全文
233 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
fxw 2005-07-25
  • 打赏
  • 举报
回复

我也是等了一个多月没有结果,无耐之下才结了贴,
其实这个问题到现在还没有人给出一个好的答案。

fxw 2005-07-25
  • 打赏
  • 举报
回复

相信现在还没有这样的工具,不然应该有人知道,

也相信不久会有这样的组件出来,可能就叫 aspxc

cat_hsfz 2005-07-25
  • 打赏
  • 举报
回复
其实这个问题很值得研究,因为在.NET Framework中如果真的存在一个引擎能够将一个Page实例还原为源代码,那将是非常有用的。那样不仅仅输出能够cache,连动态生成的逻辑部分都能够cache了,而且是cache为dll效率绝对没问题。
cat_hsfz 2005-07-22
  • 打赏
  • 举报
回复
虽然已经结贴,我还是支持你的这个问题。ASP.NET确实是完全编译的,我用Reflector看过%windir%\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\里面缓存的dll了。

我做了一个简单的纯asp页面:
<html>
<head>
<title>Now!</title>
</head>
<body>
<div><%=DateTime.Now%></div>
</body>

然后查看它的.dll,发现它自动生成了一个Page派生类,IRequiresSessionState也自动加上了,比普通的Page类多了一些双下划线开头的东西,例如两个双下划线开头的函数:
private void __BuildControlTree(Control __ctrl)
{
__ctrl.SetRenderMethodDelegate(new RenderMethod(this.__Render__control1));
}

private void __Render__control1(HtmlTextWriter __output, Control parameterContainer)
{
__output.Write("<html>\r\n<head>\r\n<title>Now!</title>\r\n</head>\r\n<body>\r\n<div>");
__output.Write(DateTime.Now);
__output.Write("</div>\r\n</body>");
}

看来编译器会把html直接放到write的部分,<% %>中的逻辑再另外处理,例如Response.Write等效于等效于直接输出。至于它是怎么生成的,我还要研究研究才知道。另外这个功能不一定完全由CodeDom提供,可能CodeDom仅仅提供编译部分。Page类理论上是通过Parse来获取aspx里面的内容,然后把它们作为控件或者纯粹write出来的html添加到自己的内部,然而这时候得到的是一个对象的实例,不是一个类。假如由我设计ASP.NET,我会考虑是否存在可能性把一个实例转化为该类的派生类,或许ASP.NET真的是这样做的。而这个转化工作或许才是关键。
ghchen 2005-06-17
  • 打赏
  • 举报
回复
不会,替你顶
fxw 2005-06-17
  • 打赏
  • 举报
回复

.jsp 是先解释为.java 再编译为 .class 的

.aspx 也是先解释为 .cs 再编译为 .dll 的

这是众所周知的

.jsp 解释为 .java 有一个组件来做:
org.apache.jasper.JspC


我想要的就是.aspx 的相应类似的一个东东.......



无爱大叔 2005-06-07
  • 打赏
  • 举报
回复
我也想知道.net在aspx执行之后把.aspx文件编译成了什么样的文件?

向java虚拟机把jsp文件编译成.class文件一样。
ye_zi 2005-06-07
  • 打赏
  • 举报
回复
mark
brando_beat 2005-06-07
  • 打赏
  • 举报
回复
没有研究过
pojia 2005-06-07
  • 打赏
  • 举报
回复
?
tigerwen01 2005-06-07
  • 打赏
  • 举报
回复
bill gate应该知道
liuqinglq 2005-06-07
  • 打赏
  • 举报
回复
好像是很高深的问题....-_-
fxw 2005-06-07
  • 打赏
  • 举报
回复

to cat_hsfz():
对你这个观点我不知道说什么好,
到 %windir%\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\ 下去看看吧

cat_hsfz 2005-06-06
  • 打赏
  • 举报
回复
.aspx能够被“局部”解释为.cs。仅仅当.aspx里面只有类代码而没有html混合代码时,.aspx才能被“完全”解释为.cs。
fxw 2005-06-06
  • 打赏
  • 举报
回复

大家居然还没明白我的意思

.aspx 是能够被解释为 .cs 的,对吧!!!

我就要一个工具来做这件事情,要最直接的,不要讲别的事情

luckyprg 2005-06-04
  • 打赏
  • 举报
回复
不是吧?那和ASP有什么分别了?
fxw 2005-06-04
  • 打赏
  • 举报
回复
.
cat_hsfz 2005-06-04
  • 打赏
  • 举报
回复
我不是很明白这个自由编译。如果你是使用code-beside方式书写,那么code就混合在html里面了,然后进行编译的时候你的html如何保留?去哪里了?

其实code-behind所谓的编译,仅仅是指编译对象代码,混合在html里面的平板代码应该是不编译的,这些平板代码应该还是每一个Page.ProcessRequest()的时候利用PageParser进行处理的。

这个问题我们应该这样理解:原本http协议和html都是平板式的(plain-text),在asp里面也完全是平板式的操作,但是在这个平板式输出操作上任何一个地方都可以操作另一个地方(因为它们都位于同一个平面,是平起平坐的),所以很不安全也难以维护,所以asp.net推出了用立体式的对象模型来维护http协议。request是平板式的进来,然后通过Controls把它立体化(类似并行化),然后进行处理,最后从新平板化(类似串行化)输出response。在这个过程中,只有立体部分能够进行编译,平板部分是不能被编译只能按照asp的老办法解释运行的。所以,如果你要完全编译一个asp.net应用,就必须保证这个应用是完全立体的(无html的)。(那就是说你只能通过Page.Controls.Add和Control.Controls.Add来描述页面。)

而你要的自由编译,就必须是上述的完全编译,否则你的html放去哪?如果还是aspx+dll,那和code-behind无异啊。
fxw 2005-06-01
  • 打赏
  • 举报
回复

再换种说法吧,

大家都知道,.aspx 第一次访问的时候要自动编译,

我想拥有一个编译工具,可以自由地编译 .aspx




meixiaofeng 2005-05-31
  • 打赏
  • 举报
回复
什么问题,怪怪的
加载更多回复(12)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧