Asp.net 如何让textbox helper为HTML4.01显示有效的HTML标记?

Asp.net 如何让textbox helper为HTML4.01显示有效的HTML标记?,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-2,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 2,我的页面/视图中有以下代码: @Html.TextBoxFor(x => x.Name, new { maxlength = "50", size = "50" }) 生成的输出为: <input id="Name" maxlength="50" name="Name" size="50" type="text" value="" /> 我正在使用以下doctype: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN

我的页面/视图中有以下代码:

@Html.TextBoxFor(x => x.Name, new { maxlength = "50", size = "50" })
生成的输出为:

<input id="Name" maxlength="50" name="Name" size="50" type="text" value="" />

我正在使用以下doctype:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

由于输入元素关闭/>,我的页面未使用HTML验证工具进行验证。如何让助手为我创建一个如下所示的输入元素:

<input id="Name" maxlength="50" name="Name" size="50" type="text" value="">

我认为由
TextBoxFor
helper生成的html是正确的,或者至少可以在任何浏览器中使用,但是如果您想创建自己的helper方法,可以向
HtmlHelper
添加扩展方法。例如:

public static class MyExtension
{
  public static MvcHtmlString MyTextBox(this HtmlHelper html, string var1, string var2)
  {
     StringBuilder tag= new StringBuilder();
     // create your tag and wrtite it in string buffer
     return MvcHtmlString.Create(tag.ToString());
  }
}

我认为由
TextBoxFor
helper生成的html是正确的,或者至少可以在任何浏览器中使用,但是如果您想创建自己的helper方法,可以向
HtmlHelper
添加扩展方法。例如:

public static class MyExtension
{
  public static MvcHtmlString MyTextBox(this HtmlHelper html, string var1, string var2)
  {
     StringBuilder tag= new StringBuilder();
     // create your tag and wrtite it in string buffer
     return MvcHtmlString.Create(tag.ToString());
  }
}

Html助手生成的Html是XHTML有效的,Html 4.01 strict和XHTML之间的区别在于XHTML需要空元素(如输入、br、链接等)才能像xml一样关闭。
我认为XHTML是更为流行的标准,如果没有具体的限制,那么应该使用它,原因之一是,在这种情况下,HTML可以用作XML(用于XSLT处理等).Html助手生成的Html是XHTML有效的,Html 4.01 strict和XHTML之间的区别在于XHTML需要空元素(如输入、br、链接等)才能像xml一样关闭。
我认为XHTML是更为流行的标准,如果没有具体的限制,那么应该使用它,原因之一是,在这种情况下,HTML可以用作XML(用于XSLT处理等)。

asp.net mvc中的HTML帮助程序只是简化HTML生成过程的帮助程序。它们不包含任何神奇的东西,只是呈现html。如果您想对生成的html拥有绝对控制权,您可以创建自己的帮助程序或在视图中编写纯html。这没什么错

顺便说一下,asp.net mvc 3默认使用html5中的
data-*
属性。如果您绝对不想使用它们,请在web.config中关闭

  <appSettings>
    <add key="ClientValidationEnabled" value="false" />
    <add key="UnobtrusiveJavaScriptEnabled" value="false" />
  </appSettings>

asp.net mvc中的Html帮助程序正是简化Html生成过程的帮助程序。它们不包含任何神奇的东西,只是呈现html。如果您想对生成的html拥有绝对控制权,您可以创建自己的帮助程序或在视图中编写纯html。这没什么错

顺便说一下,asp.net mvc 3默认使用html5中的
data-*
属性。如果您绝对不想使用它们,请在web.config中关闭

  <appSettings>
    <add key="ClientValidationEnabled" value="false" />
    <add key="UnobtrusiveJavaScriptEnabled" value="false" />
  </appSettings>



我正在使用YUI控件,他们建议使用4.01 strict。所以我想在整个项目中保持这种方式。嗯,我觉得很奇怪,你有链接吗,这是写在哪里的?是的,去。一切都很严格。比如说网格,我没有一个很好的html5链接,网络上充斥着它的普通链接。无论如何,如果这是一个新项目,为什么要使用YUI 2?因为我认为他们不会再支持YUI 2了,所以万一有任何bug,你就会被卡住。我喜欢YUI 2,YUI 3没有我需要的所有控件,比如按钮、treview等等。他们也做得很严格。那你有什么建议?我正在使用YUI控件,他们建议使用4.01 strict。所以我想在整个项目中保持这种方式。嗯,我觉得很奇怪,你有链接吗,这是写在哪里的?是的,去。一切都很严格。比如说网格,我没有一个很好的html5链接,网络上充斥着它的普通链接。无论如何,如果这是一个新项目,为什么要使用YUI 2?因为我认为他们不会再支持YUI 2了,所以万一有任何bug,你就会被卡住。我喜欢YUI 2,YUI 3没有我需要的所有控件,比如按钮、treview等等。他们也做得很严格。那么你的建议是什么?只是为了兴趣,为什么在这里引用data-*属性?还有一点使asp.net-mvc 3与html 4不兼容。如果您对x.Name使用任何类型的默认验证,那么您可以在生成的HTMLCA上获得这些属性,您可以在上面描述的内容上再给我一些示例代码吗?对于数据,将[Required]属性放在模型的Name属性上。然后看看它生成了什么html。当然,如果您使用的是asp.net-mvc3I,则使用fluent验证。它也会这样做吗?只是为了兴趣,为什么在这里引用data-*属性?还有一点使asp.net-mvc 3与html 4不兼容。如果您对x.Name使用任何类型的默认验证,那么您可以在生成的HTMLCA上获得这些属性,您可以在上面描述的内容上再给我一些示例代码吗?对于数据,将[Required]属性放在模型的Name属性上。然后看看它生成了什么html。当然,如果您使用的是asp.net-mvc3I,则使用fluent验证。它也会这样做吗?