求HTML高手讲解!

westseason 2005-02-14 10:44:07
我现在做一个页面组合的东西,也就是说一个页面不是被写出来的,而是可以将多个控件自由的连接起来实现动态组合一个页面的.那么现在的问题就是:我把页头,页尾,导航等等,以及实际内容的部分都写为一个一个的控件(.ascx),然后用动态的方法去拼接起来.这些我都没问题,做好了。但是问题是:因为一个页面最终只能有一个form runat=server,而且象button类的东西都必须放在这个里边的,那么我在控件里边当然不可以放这个标志,而如果我放在页头,而</form>就需要放在页尾的控件里,这样的导致的问题是在页头控件里找不到<form>的对应结束标记而出错,我怎么去排除这个错误呢?
我的思路是,先让这个页头控件不检查html语法错误,等它连接起来的时候自然会有配对的</form>标记的,这样就不会出错.但不知道这样行不行?如果行,请指点如何在控件中不检查HTML语法?
...全文
122 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
louzu1 2005-02-14
  • 打赏
  • 举报
回复
如果访问一个asp.net程序,必须有一个.aspx文件。

你的想法可能是根据条件组合出界面,那也至少需要一个.aspx文件装那些控件。
  • 打赏
  • 举报
回复
用用户控件,如楼上说的,把用户控件放在<form>里面就好了,不存在你说的这些问题啊.
LoveCherry 2005-02-14
  • 打赏
  • 举报
回复
把导入用户控件的语句放在
<form runat="server">之后</form>之前就可以了
westseason 2005-02-14
  • 打赏
  • 举报
回复
因为每个页面都是定义出来的,而没有固定的 页面的.
这样可能是有些困难,但是可能不是想象的那么容易解决吧.
afanti_nj 2005-02-14
  • 打赏
  • 举报
回复
是呀,为什么非要把<form></form>放在控件里呢~~~
Mars_grace 2005-02-14
  • 打赏
  • 举报
回复
在你的主页面上放<form></form>,页头页尾都不要放<form></form>,如下的格式

<html>
<form runat="server">
<table>
<tr><td><页头控件></td></tr>
...
<tr><td><UserControl1....></td></tr>
<tr><td><UserControl2....></td></tr>
....
<tr><td><页尾控件></td></tr>
</table>

</form>
<html>
westseason 2005-02-14
  • 打赏
  • 举报
回复
我在其中再放几个别的控件,比如UserControl1,UserControl2,他们里边含有一些象类似button等的控件,那么就会象这样.
<table>
<tr><td><页头控件></td></tr>
...
<tr><td><UserControl1....></td></tr>
<tr><td><UserControl2....></td></tr>
....
<tr><td><页尾控件></td></tr>
</table>
但是这样并不会有<form ruanat=server>这样的标记.
在执行编译时是可以通过的,但是无法运行,它会提示:

类型“LinkButton”的控件“LinkButton1”必须放在具有 runat=server 的窗体标记内。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 类型“LinkButton”的控件“LinkButton1”必须放在具有 runat=server 的窗体标记内。
pworm 2005-02-14
  • 打赏
  • 举报
回复
TO westseason (西城时代):
因为一个页面最终只能有一个form runat=server,而且象button类的东西都必须放在这个里边的,那么我在控件里边当然不可以放这个标志,而如果我放在页头,而</form>就需要放在页尾的控件里,这样的导致的问题是在页头控件里找不到<form>的对应结束标记而出错,我怎么去排除这个错误呢?

没有必要这样做。页头和页尾都不放<form>标记,那么最终的动态生成的页面就会是类似这样:
<html>
<form runat="server">
<table>
<tr><td><页头控件></td></tr>
.........
<tr><td><页尾控件></td></tr>
</table>
<form>
<html>
pworm 2005-02-14
  • 打赏
  • 举报
回复
TO westseason(西城时代) :可能是我没有说清楚。比如你要生成的页面是index.aspx,那么在默认的情况下,页面的HTML代码已经是
<%@ Page language="c#" Codebehind="index.aspx.cs" AutoEventWireup="false" Inherits="my.index" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<html>
<head>
<title>index</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name=vs_defaultClientScript content="JavaScript">
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body MS_POSITIONING="GridLayout">

<form id="Form1" method="post" runat="server">

</form>

</body>
</html>

所以,加入用户控件后才会是我开始说的那样。
gxboy 2005-02-14
  • 打赏
  • 举报
回复
追求最大灵活性就不要用服务器控件。

62,046

社区成员

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

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

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

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