2009-10-23 52 views
2

在我爲內部使用而設計的小型Web應用程序中,我希望用戶能夠選擇要打開的數據文件之一。我有一個強類型的視圖,它將文件列表作爲模型。ASP.Net MVC中的一個視圖上的多個表單,同時保留驗證

我的初始版本有一個索引操作,它獲取數據文件列表並返回視圖,然後創建一個新文件的操作,以及上傳現有文件的上傳操作。但是,在這兩種情況下,爲一個文本框和按鈕設置一個全新的頁面將會是一個糟糕的用戶體驗,因此我在Index視圖中添加了兩個表單,一個指向Create,另一個指向Upload,兩個都使用發佈動詞。

這個工作非常好,加上仍然保留了漂亮的URL命名 - 即使創建/上傳沒有UI。問題是,在這兩個操作的結尾,我做了一個 返回RedirectToAction(「Index」); 哪個輪到獲取要顯示的數據並顯示視圖 - 很好。但我沒有得到驗證。看起來,爲了讓ValidationSummary和ValidationMessage幫助器工作,我需要將Post操作與Get操作(在本例中爲Index)調用相同。我改變了一切,以便在Post操作中只有一個Get/Post Index操作和一個if語句,以查看該按鈕是否爲創建或上傳。但是,這似乎是比我最初想出的解決方案更爲複雜的解決方案。

當然,另一種選擇是爲創建/上傳創建視圖,每個視圖都帶有單個文本框 - 但我寧願將笨重的代碼視爲笨重的UI。

有什麼我失蹤,或者這只是MVC驗證框架的設計方式。

+1

你需要接受一些你的問題的答案,期望人們回答更多...... – Palantir

+1

嗯。對此的信息。我是盲人,並使用屏幕閱讀器 - 我相信我已經通過點擊接受按鈕來確認答案。將研究這個並回去接受以前的。 – Saqib

+0

你使用什麼屏幕閱讀器? –

回答

0

看起來好像你真的希望這個應用程序成爲一個頁面,所有的東西都在進行。 接縫合理,因爲它非常小。 在這種情況下,我會堅持您所採取的一項行動,因爲驗證可以直接使用。

您擁有的另一個選項是將Errormessages放入TempData中上載/創建在Index中使用它們(通過將它們放入ModelState中)。

+0

謝謝 - 我同意,這可能是現在最簡單的方法。感覺有點不像我想要的那麼優雅,但還有其他幾種可供選擇的方案,比如你推薦的方案,這對於更大的應用來說是值得的 - 謝謝。 – Saqib

相關問題