2011-06-16 17 views
0

我试图使用内置于ASP.net MVC 3中的远程验证功能,该功能已成功使用了其他几次。但是,由于页面上的表单元素的名称包含“[”和“]”(主模型集合),我似乎无法使用远程验证。使用包含特殊字符的元素进行远程验证

正被我的页面上呈现的HTML是:

<input id="Leads_0__OpenDate" class="datepicker medium hasDatepicker valid" type="text" name="Leads[0].OpenDate" data-val-required="Open Date is required." data-val="true"> 

通常情况下,我只想加入到我的视图模型为Opendate里场:

[Remote("ValidateOpenDate", "Opportunity", ErrorMessage = "The open date can not be in the future.")] 

然而,由于该领域是由于C#不允许使用“[”或“]”作为“Leads [0] .OpenDate”,因此它不会成为参数中的有效名称,所以它会被回发到ValidateOpenDate操作。在变量名中。

有没有什么我可以做的远程验证工作,而不是只写一些自定义JavaScript?

回答

0
public ActionResult ValidateOpenDate() 
{ 
    var openDate = Request["Leads[0].OpenDate"]; 
    ... 
} 

或(未经测试,不知道是否会工作,因为括号):

public ActionResult ValidateOpenDate([Bind(Prefix = "Leads[0]")] string openDate) 
{ 
    ... 
} 
+0

非常感谢!为什么我没有想到只使用Request?不幸的是绑定前缀不起作用,但请求很好! – mandreko 2011-06-16 15:21:51

1

其实第二种情况需要看起来像

public ActionResult ValidateOpenDate([Bind(Prefix = "Leads[0].OpenDate")] string openDate) 
    { 
     ... 
    } 

可能听说过其他地方,但只是在这里记录它。