2012-06-09 98 views
1

這是一個設計/技術問題。使用ASP.NET MVC在一個頁面上創建動態Master-Details視圖

使用ASP.NET MVC我可以使用兩種視圖輕鬆創建一個簡單的應用程序,主視圖以表格形式顯示所有記錄只讀。另一個細節視圖創建一個新的記錄。

我的目標是將詳細信息與表格放在同一頁上。 用戶輸入數據按保存,並將新記錄添加到表而不切換視圖並重新加載內容。它應該基本上像在stackowerflow中發佈新答案或評論一樣。

我找到了通過編寫自己的jQuery代碼並使用JSON與控制器操作進行通信的方式。這就是在ASP.NET MVC中創建這些動態表單的方式嗎?

用這種方法我面對下面的設計/可擴展性問題:

  • 渲染使用jQuery新行似乎對我有點混亂。
  • 我有兩個地方可以調整,如果你添加一個新的字段 - 一次在主視圖中,第二個在jQuery腳本中。

目前我加入了新的記錄表是這樣的:

function addQueryField() { 
     // Determine the index of the next row to insert 
     var index = $("tr[id^=queryRow]").size(); 
     // Create DOM element for table row 
     var oTr = $(document.createElement("tr")).attr("id", "queryRow" + index); 
     // Create DOM element for value textbox 
     var oValueTextBox = $(document.createElement("input")).attr("name", "query[" + index + "].Value").attr("id", "Value"+index).attr("type", "text"); 
    }); 

我使用基本的技術描述here

那裏可能有一些開箱即用的解決方案嗎?

+1

你這樣做的權利。你有沒有遇到任何問題? – Shyju

+0

@Shyju 這不是一個技術問題,而是更多的設計/可擴展性問題: 1.使用jQury渲染新行看起來有點混亂。 2.在這種情況下,如果您添加一個新字段,則有兩個地方可以調整 - 一次是在主視圖中,另一個是在jQuery腳本中。 –

+0

你想在jQuery腳本中添加什麼?你能不能更詳細一點? – Shyju

回答

1

如果我是你我會添加處理從更新表「或網頁的一部分」

分開我做這樣的:

  1. 客戶單擊添加按鈕
  2. 我通過jQuery加載合適Create局部視圖和在模式窗口
  3. 客戶端也許顯示它填寫表格,然後點擊保存
  4. 保存我首先驗證表單,如果一切正常,我通過jQuery提交,並阻止頁面提交
  5. 在控制器上我做Post要求什麼,如果有任何ModelState錯誤,我將它們返回爲JSON讓客戶端java腳本代碼向客戶端顯示這些錯誤
  6. 如果沒有從服務器返回的錯誤那麼我通過jQuery更新頁面的「部分」或「你的表」調用服務器再次並讓ControllerAction返回部分視圖,而不是整頁視圖。

我知道有很多事情需要更多的解釋,但我希望這個想法是明確

+1

感謝您的解釋。這個想法很清楚。 因此,據我瞭解,每一次添加都會導致帶有所有項目列表的部分視圖重新加載。有時避免這種情況可能很重要(例如,聊天或論壇應用程序有很多記錄和較高的添加率)。這就是爲什麼我要添加記錄表單jQuery。不過謝謝你。如果沒有人會想出魔法解決方案,我會接受你的。 –

+0

@ achitaka-san歡迎您:)如果您有這樣特殊的情況,我說得通俗一點,您說得很對。無論如何,只要在最後一步中改變行爲,但在將新項目插入到「PartialView」之前,您應該先檢查服務器的ModelState, –