2009-09-25 65 views
0

当编码一个Asp.Net页面中,你一般在ASPX添加runat属性:如何判断表单runat = server是否已设置?

<form id="form1" runat="server"> 

是否有可能在代码中告诉后面如果用户没有这样做,即他们只这样做:

<form id="form1"> 

这里的表格有id“form1”,但在我的情况下,我不知道这一点。后面像这样的代码是什么我要找:

if(Page.HasForm) 
{ 
} 
+1

什么?在代码后面?是的,你可以很容易地告诉。如果你有权访问一个名为'form1'的对象:)但我认为你的意思是在呈现的HTML中?你能澄清吗? – 2009-09-25 02:05:47

+0

您可能不知道表单ID。查看更新的问题。 – Petras 2009-09-25 02:25:18

+1

谁在写应用程序?不同的人对标记负责而不是代码隐藏?是否无法检查标记以检查表单的名称?这个问题,就目前来看,对我来说毫无意义。 – tvanfosson 2009-09-25 02:47:34

回答

2

你永远只能有每个.aspx页面中“RUNAT =服务器”上一个表单标签。你所要做的就是检查一下Page.Form是否为null。如果它是空的,那么没有标记为runat服务器的表单。

if (Page.Form != null) 
{ 

} 

这是RUNAT =“服务器”的一部分,使.aspx页处理的元素,创建在服务器侧上的相应的对象。如果组件未在服务器上运行,则不会将其添加到页面的控制层次结构中。

+0

你确定你也有一个页面...大声笑无法自拔。 – 2009-09-25 03:14:07

+0

与OP一样多的肋骨越来越多,它可能有一个空表单。考虑完全通过代码构建的Page类,然后从它们继承ASPX。基类可能具有依赖于具有表单的子类的虚拟功能。 – womp 2009-09-25 03:29:18

0

var v = this.Form.TagName; //获取作为runat的表单的名称。

当然,如果它不是maked为RUNAT然后后面的代码无论如何都不会跑......

0

当你在代码页C#或Visual Basic代码,您将无法访问对象没有设置runat = server选项。

你可以使用me.controls页面或类似的东西(我不知道确切的代码,但它接近这个)轻松地访问页面中的所有控件,并检查控件的类型以获得形成。

为什么你需要知道这一点?如果页面没有runat = server表单,那么它不能真正用作服务器页面。

0

,您将可以从代码隐藏访问形式:

Response.Write(form1.Name); 

没有RUNAT =“服务器”,你只会得到一个编译错误。

相关问题