C# Html.com与表单-哪一个更好,为什么?

C# Html.com与表单-哪一个更好,为什么?,c#,asp.net-mvc,C#,Asp.net Mvc,我是MVC&C新手,只是想在我的网站上做一个表格 我知道我可以使用html.beginform,也可以只使用标准html。 似乎网络上的每个人都在使用html.beginform,但我不明白它的优点。在我看来,使用beginform只是服务器渲染html的额外工作。html.beginform将为您将html内容包装在花括号内,它还可以帮助您“轻松”指定“控制器”和操作 Html.beginform(“操作”、“控制器”、“方法”){ //这里的HTML控件 }//模拟标记 如果要使用普通表单

我是MVC&C新手,只是想在我的网站上做一个表格

我知道我可以使用html.beginform,也可以只使用标准html。
似乎网络上的每个人都在使用html.beginform,但我不明白它的优点。在我看来,使用beginform只是服务器渲染html的额外工作。

html.beginform将为您将html内容包装在花括号内,它还可以帮助您“轻松”指定“控制器”和操作

Html.beginform(“操作”、“控制器”、“方法”){
//这里的HTML控件
}//模拟标记
如果要使用普通表单标记,则必须硬编码URL并自行关闭表单标记


就性能而言,没有区别。这一切都与个人偏好有关。

Asp.Net MVC知道RouteConfig中定义的路由。ASP.NET路由模块负责将传入的浏览器请求映射到特定的MVC控制器操作

HTML助手询问路由引擎如何到达控制器的操作。在幕后,它在RouteTable公开的Routes属性上使用名为GetVirtualPath的方法,这就是web应用程序在global.asax中注册其所有路由的地方

所以,在将来,即使您更改了该控制器和操作的路由映射,它也会在html中正确设置表单标记的操作


对于Html.ActionLink等其他帮助程序,它也会生成知道已定义路由的超链接。

没有更好或更糟的,它们有不同的用途
Html.BeginForm
将在最终Html中呈现
。您可以将参数传递给
Html.BeginForm
,与手动传递相比,这些参数具有特殊意义
Html.beginform("Action", "Controller", "Method") {
  // HTML controls here
} // Simulates a </form> tag