我正在使用ASP.NET MVC RC2。我有一组自动生成的“Linq-to-SQL Classes”类,其中每个类在我的数据库中建模一个表。我有一些默认的“编辑”视图,它们使用neat -o Html.TextBoxFor
帮助器扩展来为表中的列呈现HTML输入字段。
但是,我注意到生成的HTML中没有指定MAXLENGTH
属性。快速谷歌显示您可以使用TextBoxFor
等添加显式属性,但这意味着我需要对值进行硬编码(我需要记住为每个输入执行此操作)。
考虑到所有内容都是直接从数据库自动生成的,所以这看起来很差,所以列的大小是已知的。 (尽管公平地说,Web端的东西必须与任何模型对象一起使用,而不仅仅是使用Linq-to-SQL对象。)
有没有什么好方法可以让它做正确的事情?
答案 0 :(得分:3)
我不担心你的html元素的最大长度属性,这是一种虚假的安全感。
我要做的是在您需要最大长度验证的字段中添加StringLength
属性。这将自动为您提供长度的服务器端验证,如果您愿意,还可以为您提供客户端验证的长度。
如果您需要有关ASP.NET MVC 2对Data Annotations验证属性的新用法的更多信息,请阅读此blog post by Scott Gu。
此外,您可能需要为生成的Linq to SQL类使用好友类...在这种情况下,您可以阅读blog post I wrote about it。
HTHS,
查尔斯
答案 1 :(得分:1)
使用MVC / jQuery时,您只需在JavaScript / TypeScript中将data-val-maxlength-max重新应用为maxlength:
$container.find('[data-val-maxlength-max]')
.each((index, item) => {
var $this = $(item);
var maxLength = $this.attr('data-val-maxlength-max');
$this.attr('maxlength', maxLength);
});
答案 2 :(得分:-1)