[英]asp.net mvc 3 and dynamic view generation
我正在實現自定義用戶個人資料屏幕。
這幾乎是一個典型的用戶個人資料屏幕,您會在大多數具有某種成員資格元素的網站上找到該用戶。
就我而言,由於屏幕是市場研究SAS產品的一部分,因此要顯示在配置文件中的數據點會因市場研究產品而異。 產品主持人將通過提供以下信息來指定需要捕獲哪些數據點:
字段名稱,顯示名稱,字段類型(文本,數字,單選按鈕,復選框等),必填…
我一直試圖找出如何動態生成MVC視圖以反映請求的數據點列表的方法。 我想盡可能多地使用MVC框架,而不必編寫自己的幫助程序來生成html。 我還想盡可能使用不干擾驗證。
我對目前最好的方法感到困惑。
我是否嘗試使用:
還有其他更有意義的方法(jQuery模板),編輯器模板,一系列局部視圖嗎?
如果不確定對於任何給定操作將要提交給服務器什么,則可以使該操作采用FormCollection
類型的參數,然后遍歷字段。 那時,您可能希望使用該字段的名稱作為鍵,來處理每種類型的字段。
為了將項目發送到視圖,只需將類中每個字段的數據包裝起來,就像這樣:
public class DataPoint
{
public string FieldName { get; set; }
public string DisplayName { get; set; }
public object Value { get; set; }
}
然后讓您的視圖迭代DataPoint
。 EditorFor()
方法將處理Value
的類型檢查,以產生正確的輸入類型。 這里唯一棘手的部分是獲取FieldName
作為輸入的名稱。
對於開始時不會過分復雜的事情,將類作為運行時進行構建將需要大量的工作。 除非您知道要綁定的模型,否則自定義ModelBinder
不會幫助您,這是問題的根源。
您可以繼續並用命名的div括起來的所有字段來布局視圖,然后在render Action中讓Controller添加一個定義為
.hidden
{
display:none;
}
到每個不需要字段的div?
另一個選擇是編寫HTML擴展方法,該方法可以動態構建視圖。 您可以為每種控件類型創建局部視圖,並且擴展將它們逐一插入到呈現的HtmlString中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.