【问题标题】:ASP.NET 2.0 -how do I include files containing server-side code?ASP.NET 2.0 - 如何包含包含服务器端代码的文件?
【发布时间】:2010-10-20 04:18:41
【问题描述】:

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

每个自定义登录页面都需要能够动态显示登录错误,并可能传入其他变量。 假设动态登录页面如下所示(此处过于简化):

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

如果aspx页面像这样加载文件:

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

代码显示在输出中并且没有得到处理。我尝试了其他方法来加载文件内容(类似于经典的 ASP 包含的内容),但每次都得到相同的结果。

我可以将所有自定义页面设置为用户控件,但我需要对 css、js 和 html 进行 100% 控制 - 我在此处阅读的文档表明我不会拥有那种粒度级别。 link text

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

有什么帮助/建议吗?

【问题讨论】:

  • 如果您还不能在 mvc +1 中更优雅地为 John K 的回答提供部分功能,那么用户控件就可以正常工作

标签: asp.net asp.net-2.0


【解决方案1】:

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

您不会在页面上获得 100% 的控制权,但您可以在用户控件实例中进行控制。此外,很多时候,您可以在您的控制范围内覆盖这些技术,例如 CSS。
最后,因为所有控件都被整合到一个大的 HTML 页面中,您将拥有与使用客户端技术的任何单个网页相同级别的控制。


如果您愿意,您可以构建一个 Web UserControl 来表示登录/登录,然后将该控件的实例包含到任何页面、任何位置、跨多个页面。
(请参阅关于如何创建和使用它的 MSDN 帮助页面)。

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

如果这是您认为需要的信息,这应该是继续寻找的良好开端。

内部
用户控件可以有自己的逻辑,访问浏览器查询字符串,访问页面会话、应用程序等。几乎所有它自己需要知道的东西才能工作。

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

其他选项 - 动态控件加载

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

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

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

【讨论】:

  • 我想我希望有更多类似 MVC 的东西;但我认为,被 .NET 2 困住正在使希望破灭。 ascx页面可以不先编译就放入文件夹吗?
  • 我最终选择了不同的路线;但是您的回答更务实,因此对于将来访问此问题的人来说更好
猜你喜欢
  • 2013-03-13
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
相关资源
最近更新 更多