2010-03-17 24 views
3

我正在使用ASP.NET MVC RC2。我有一組自動生成的「Linq-to-SQL類」類,其中每個類在我的數據庫中建模一個表。我有一些默認的「編輯」視圖,它們使用整潔的Html.TextBoxFor助手擴展來呈現表格中列的HTML輸入字段。如何自動設置輸入欄的MAXLENGTH?

但是,我注意到在生成的HTML中沒有指定MAXLENGTH屬性。快速谷歌顯示,您可以使用TextBoxFor等添加明確的屬性,但這意味着我需要硬編碼值(我需要記住爲每個輸入)。

考慮到所有內容都是直接從數據庫自動生成的,所以這看起來相當差,所以列的大小是已知的。 (雖然,公平的說,網絡端的東西必須適用於任何模型對象,而不僅僅是Linq-to-SQL對象)。

有沒有什麼好方法讓這個做正確的事情?

+0

相關:http://stackoverflow.com/questions/2386365/maxlength-attribute-of-a-text-box-from-the-dataannotations-strongngth-in-mvc2 – 2011-08-29 03:54:11

回答

3

我不擔心你的html元素的最大長度屬性,這是一種錯誤的安全感。

我會做的是添加一個StringLength屬性到您需要最大長度驗證的字段。這將自動爲您提供服務器端的長度驗證,並且如果您願意,還可以爲您提供客戶端驗證的長度。

如果您需要更多關於ASP.NET MVC 2新數據註釋驗證屬性的使用信息,請閱讀blog post by Scott Gu

此外,您可能需要爲您生成的Linq to SQL類使用好友類...在這種情況下,您可以閱讀blog post I wrote about it

HTHS,
查爾斯

+0

謝謝,那個顧的帖子很有幫助。但是,我仍然非常失望,不僅要創建好友類,還要明確指定所有字段的長度。 「Linq-to-SQL類」生成器在檢查我的數據庫時知道所有這些信息。爲什麼不把這些屬性添加到生成的類中?不得不重複這個東西是*不*幹*! (不是你的錯,我知道)。 – 2010-03-18 11:24:29

+8

Digression:我不同意HTML元素上的MAXLENGTH不值得 - 它可能無助於安全性,但至少它可以幫助用戶不輸入2頁,以後纔會被告知只允許10個字符... – 2010-03-18 11:25:04

+0

採取的點。就我個人而言,我使用客戶端驗證來處理後面的問題,也有助於不重複邏輯。但是,在禁用JS的情況下,MAXLENGTH會在獲得服務器之前完成這項工作。 – Charlino 2010-03-20 07:12:52

-1

查爾斯,我有同樣的問題,今天上午制定出解決方案。 Here's the blog post with the source code.

+2

雖然恕我直言,鏈接到自己寫的博客文章沒有什麼內在的錯誤,爲什麼不在這裏包括你的答案的內容? (可能會在鏈接中指出「正如我的博客中所描述的那樣」)您的博客文章的篇幅不夠長,以至於無法將其包含在此答案中,並且它將保持所有內容都很完美。 – Bart 2011-12-14 04:25:17