簡體   English   中英

ASP.NET MVC 3和動態視圖生成

[英]asp.net mvc 3 and dynamic view generation

我正在實現自定義用戶個人資料屏幕。

這幾乎是一個典型的用戶個人資料屏幕,您會在大多數具有某種成員資格元素的網站上找到該用戶。

就我而言,由於屏幕是市場研究SAS產品的一部分,因此要顯示在配置文件中的數據點會因市場研究產品而異。 產品主持人將通過提供以下信息來指定需要捕獲哪些數據點:

字段名稱,顯示名稱,字段類型(文本,數字,單選按鈕,復選框等),必填…

我一直試圖找出如何動態生成MVC視圖以反映請求的數據點列表的方法。 我想盡可能多地使用MVC框架,而不必編寫自己的幫助程序來生成html。 我還想盡可能使用不干擾驗證。

我對目前最好的方法感到困惑。

我是否嘗試使用:

  • 定制模型活頁夾
  • 代碼生成以在運行時生成模型類並將其綁定到視圖
  • 只是生成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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM