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”解释了所有内容