有谁知道为什么可以使用 System.Web.Mvc.HtmlHelper(隐藏,复选框,密码,文本框)呈现某些HTML表单控件,而有些则不能也应该用HTML(文件,提交)显式编写?这种分离的原理是什么? 好问题. 我认为输
我认为输入控件(例如input,select)包含在Html帮助器中,因此它们可以通过TempData维护自己的状态,而无需用户编写大量代码来实现这一点.我还认为链接和表单控件被包装,以便为这些控件指定控制器/操作提供简单统一的方法.大多数其他控件不保证开箱即用的状态管理或需要构建的控制器/操作URL.
当然没有什么能阻止你为自己喜欢的任何控件编写自己的包装器 – 例如这是我使用的一对 – 这是一个html标签控件:
public static string Label(this HtmlHelper helper, string fieldName, string labelText) { var sb = new StringBuilder(); sb.Append("<label for=\""); sb.Append(fieldName); sb.Append("\">"); sb.Append(labelText); sb.Append("</label>"); return sb.ToString(); }
这是我使用的一个包装标签帮助器和文本框以生成带有标签的统一文本输入字段:
public static string TextField(this HtmlHelper helper, string labelText, string fieldName, string value) { return string.Concat( "<div>", helper.Label(fieldName, labelText), helper.TextBox(fieldName, value), "</div>"); }