ASP.NET 2.0 - 我如何包含包含服务器端代码的文件?

时间:2010-10-20 04:18:41

标签: asp.net asp.net-2.0

我希望能够根据传递给查询字符串的几个参数加载自定义登录页面。

每个自定义登录页面都需要能够动态显示登录错误,并可能传入其他变量。 假设动态登录页面看起来像这样(这里过于简化):

<form>
<% if (has_errors) { Response.Write(error_msg); } %>
<input type="text" name="email">
</form>

如果aspx页面加载如下文件:

Response.writefile("path/to/custom/page"); 

代码显示在输出中,不会被处理。我已尝试过其他方法来加载文件内容(类似于传统的ASP包含),但每次都得到相同的结果。

我可以将所有自定义页面设置为用户控件,但我需要100%控制css,js和html - 我在这里阅读的文档表明我没有那种级别的粒度。 link text

PLUS - 我被困在.net 2.0环境中 - 所以我无法使用.NET MVC

任何帮助/建议?

1 个答案:

答案 0 :(得分:2)

  

但是我需要100%控制css,   js和html

您不会100%超过页面,但您将在User Control实例中拥有控制权。此外,很多时候,您可以在控件内覆盖CSS等技术 最后,因为所有控件都被合并到一个大的HTML页面中,您将拥有与使用客户端技术的任何单个网页相同的控制级别。


您可以构建一个Web UserControl来表示log / in,然后根据需要在任意页面,任意位置,跨多个页面包含该控件的实例。
(请参阅MSDN帮助页面上有关如何创建和使用它的主题。)

其他有用的参考文献(这些是同一主题的不同角度)。

如果这是您认为需要的信息,这应该是一个良好的开端。

<强>塔内
用户控件可以拥有自己的逻辑,访问浏览器查询字符串,访问页面会话,应用程序等等。它需要知道的任何事情才能使自己工作。

面向对象
此外,由于用户控件也是一个对象,您可以添加自己的public方法和属性,通过它们可以与页面上的控件进行交互(就像您与其他Web控件之类的交互一样) Button.Text =“click”,TextBox.BackColor = System.Drawing.Color.Blue等)。

其他选项 - 动态控制加载

您可能需要考虑使用Page.LoadControl(..)方法在运行时动态加载控件:

  

从文件加载Control对象   基于指定的虚拟路径。

MyControl myControl1 = (MyControl)LoadControl("TempControl_Samples1.cs.ascx");
PlaceHolder1.Controls.Add(myControl1);