如何摆脱.aspx页面中的“默认”表单元素?

时间:2009-02-09 21:40:15

标签: asp.net webforms

作为那个网络标准的极客,我不喜欢围绕我整个网页的默认<form runat="server">。我见过很多没有这些的基于ASP.NET的网页,所以看起来它可以删除而不带走任何功能。怎么样?

4 个答案:

答案 0 :(得分:5)

如果您希望使用控件的东西,则必须有<form runat="server">。否则回发是不可能的,就像viewstate和.NET所依赖的其他东西一样。

你确定你已经看到了你以为你见过的东西吗?也许这些页面只包含静态内容?或者他们可能是用户控制?或者另一种常见的可能性 - 也许是拥有<form runat="server">的主页?

答案 1 :(得分:3)

在没有<form runat="server">标记的情况下,您很可能会查看ASP.NET MVC中构建的网站,作为提及的评论者之一。 ASP.NET MVC不使用服务器控件,Viewstate或服务器端表单提供的其他功能,而是使用更接近HTML模型和相对简单的内联脚本。

从好的方面来说,你更接近直接的HTML(事实上,你基本上是直接的HTML),因此更容易执行Javascript操作,集成自定义UI小部件等。

在(可能)负面,如果您对ASP.NET WebForms控件和技术进行了大量投资,那些通常不会与新的MVC框架兼容。此外,还有一个与之相关的学习曲线。 (我现在就进入它。)

有关ASP.NET MVC的更多信息,请参阅official site。正如其他人所提到的,SO就是基于这种技术。

答案 2 :(得分:2)

表单元素必不可少,以便ASP.NET正常工作。有必要将用户输入发布回Web服务器。

我建议您查看ASP.NET viewstate以了解其工作原理。

您可以删除该元素的唯一方案是在.aspx文件中使用纯静态HTML。

答案 3 :(得分:1)

如果您不需要利用Web控件,视图状态等,您可以使用标准HTML表单对ASP.NET页面进行编码,并仍然获取通过Request对象传回的值。同样,您可以通过Response对象(显式或使用<%= MyVar %>格式)写入页面,这样就没有什么可以阻止您拥有一个没有<form runat="server">的动态网站。从本质上讲,你可以在与页面/表单的交互方面获得类似于经典ASP的东西,但是你拥有完整的.NET框架和后端所有常见的优秀C#/ VB.NET内容。

显然有一个问题是,这是否是一种合理的方法,因为你失去了ASP.NET的许多好处(虽然你获得了对web控件没有的输出的一定程度的控制)。如果你不想使用<form runat="server">,那么MVC似乎是最好的方法。我们使用没有<form runat="server">的Web表单模型的唯一原因是迁移经典ASP应用程序,我们想要快速移植到ASP.NET,然后将代码修改为更自然的.NET样式。 / p>

因此,有一些限制,完全可能,但不一定推荐。

当然,它不会影响对Web标准的遵从性,因为在将HTML发送到浏览器之前,runat="server"属性被删除 - 它只出现在源代码中。

相关问题