作为那个网络标准的极客,我不喜欢围绕我整个网页的默认<form runat="server">
。我见过很多没有这些的基于ASP.NET的网页,所以看起来它可以删除而不带走任何功能。怎么样?
答案 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"
属性被删除 - 它只出现在源代码中。