1

使用ASP.Net MVC1並動態創建模型中的html,然後將其放入視圖並在運行時呈現。asp.net mvc 1驗證使用動態創建的控件

我的觀點是一個單頁,看起來像這樣:

<%@ Page Language="VB" Inherits="System.Web.Mvc.ViewPage" %> 
<%=(ViewData("Content"))%> 

這種動態創建的內容是在

<form method=post action="https://stackoverflow.com/questions/nextBatch"> 
    <div id="text">What is your preferred drink?</div> 
    <select> 
     <option selected value="noSelect"> - Please make a selection - </option> 
     <option value="a" >Milk</option> 
     <option value="b" >Coffee</option> 
     <option value="c" >Tea</option> 
    </select> 
</form> 

格式大多下拉列表框是否有可能在執行驗證下拉列表以確保已選擇一個值?如果任何仍然具有默認值的下拉列表(「請進行選擇」文本)頁面然後重新顯示問題的字體顏色或下拉列表框更改爲紅色?

我來自Webforms世界,並已切換到MVC(我真的很喜歡!),我知道那裏有一些非常漂亮的驗證工具,但你似乎必須在視圖內對它們進行解釋本身。

我無法通過控制器的viewdata傳遞HTML助手,因爲它不會呈現,除非它已直接編碼到視圖本身中。

此外,我正在尋找一個純粹的asp.net解決方案,因爲我無法使用JavaScript由於accessiblity的擔憂。我可以通過formscollection對象訪問下拉列表的所有值,但沒有任何問題,但從那裏我有點卡住了。

有沒有我失蹤的東西?

非常感謝您提前任何建議或幫助!

+0

使用包含驗證例程的ViewModel對象,如NerdDinner教程中所述:http://nerddinnerbook.s3.amazonaws.com/Part3.htm – 2010-08-11 16:53:57

+0

通過將你的內容填入這樣的視圖,真的繞過了整個模型的點... – womp 2010-08-11 16:54:23

+0

@ Womp 對不起,我沒有讓自己清楚。我寫了下拉列表框是動態創建的,但我沒有提到所有HTML的邏輯和生成都來自模型。我認爲唯一的事情是我在第一個代碼框中發佈的內容。順便說一句 - 不錯的網站和博客。你肯定對這件事充滿激情! – HyperHyper 2010-08-12 14:18:38

回答

0

如果你不能使用Javascript,驗證的唯一方法是服務器端。

您可以使用內置的ModelState對象來處理錯誤。此Scott Guthrie博客文章「ASP.NET MVC 2: Model Validation」解釋了所有內容