我們正在構建一個動態複雜表單應用程序。 由於它的複雜性(很多繼承和複雜類型),所生成的名稱和ID是很大(巨大?)。更改生成的ID和名稱屬性
因此我們想修改MVC生成id和name屬性的方式。 我用反射器(和谷歌/ stackoverflow)找出在這樣做了: ViewData.TemplateInfo.GetFullHtmlFieldName(...)
我們使用:使用產生 ViewData.TemplateInfo.GetFullHtmlFieldId(...)
- 標識的使用產生'...爲''建立輔助方法來生成標籤,文本框,驗證信息,...
- 這裏是一個生成的ID的例子:
ZForm_Part_1__Repeater_0__RepeatingPart_0__ContactSelectList_0__PersonData_TelephoneAddress_Number_FormattedNumber
- 這是一個產生 名的例子:
ZForm.Part[1].Repeater[0].RepeatingPart[0].ContactSelectList[0].PersonData.TelephoneAddress.Number.FormattedNumber
由於規模和我們的形式複雜,這增加了幾十千字節爲一種形式。
爲什麼在1頁?因爲這是一個需求;)現在我看到2個選項我們如何改變這些id的生成方式。我其實並沒有真正想過是否有更乾淨的方法去做我們想做的事情?
下面是我看到的選項:- 複製/粘貼的必要的輔助方法,包括私營InputHelper(...)源和修改InputHelper叫我們自己GetFullHtmlFieldName的版本(這是法律?)
- 寫一些過濾器,可以入侵生成的html,並使用一些正則表達式kungfu過濾掉所有的id和name屬性,並將它們轉換爲更短的版本。
最終的結果應該產生這樣的名字:
Z.P[1].Rep[0].RP[0].CSL[0].PD.Tel.N.FormattedNumber
我希望我寫了足夠的細節來了解我們是後的東西。
理想的情況是,如果名稱/ ID生成邏輯可以被插入。Manu。
ps:與this的問題類似。
- 這裏是一個生成的ID的例子:
建議:最近,我設法通過手動設置'ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix'做這樣的事情在自定義編輯器模板中;取決於你如何處理事情,這可能也適用於你? – 2012-11-07 11:43:23