我希望能够根据传递给查询字符串的几个参数加载自定义登录页面。
每个自定义登录页面都需要能够动态显示登录错误,并可能传入其他变量。 假设动态登录页面看起来像这样(这里过于简化):
<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
任何帮助/建议?
答案 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);