如何自动在输入字段上设置MAXLENGTH?

时间:2010-03-17 16:55:44

标签: asp.net-mvc visual-studio-2008 linq-to-sql

我正在使用ASP.NET MVC RC2。我有一组自动生成的“Linq-to-SQL Classes”类,其中每个类在我的数据库中建模一个表。我有一些默认的“编辑”视图,它们使用neat -o Html.TextBoxFor帮助器扩展来为表中的列呈现HTML输入字段。

但是,我注意到生成的HTML中没有指定MAXLENGTH属性。快速谷歌显示您可以使用TextBoxFor等添加显式属性,但这意味着我需要对值进行硬编码(我需要记住为每个输入执行此操作)。

考虑到所有内容都是直接从数据库自动生成的,所以这看起来很差,所以列的大小是已知的。 (尽管公平地说,Web端的东西必须与任何模型对象一起使用,而不仅仅是使用Linq-to-SQL对象。)

有没有什么好方法可以让它做正确的事情?

3 个答案:

答案 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)

查尔斯,我遇到了同样的问题,并在今天早上制定了解决方案。 Here's the blog post with the source code.