2009-10-07 59 views
9

即使模型状态有效,Html.ValidationSummary()仍然呈现。ASP.Net MVC:仅当出现错误时才呈现Html.ValidationSummary

这个例子不起作用:

<% if (!this.ViewData.ModelState.IsValid) 
{ %> 
<%= Html.ValidationSummary()%> 
<% } %> 

还有所呈现空 'UL' 标签。 如果模型状态无效,我如何才能使其仅显示

编辑 原来的ModelState中确实是无效的,但我的代码中不添加任何错误消息,这是没有明显的理由只是无效。

[AcceptVerbs("POST")] 
public ActionResult Login(string username, string password, bool? remember) 
    { 
     if (string.IsNullOrEmpty(username)) 
     { 
      ModelState.AddModelError("Username", "Username is required"); 
     } 
     if (string.IsNullOrEmpty(password)) 
     { 
      ModelState.AddModelError("Password", "Password is required"); 
     } 

     if (ModelState.IsValid) 
     { 
      ; // this point is never reached 
     } 

     return View(); 
    } 

回答

6

如果您提供的信息是正确的,那么this.ViewData.ModelState.IsValid肯定是错误的。这里一定有其他的代码,你没有提供。

2

source code表示当模型状态有效时,助手返回一个空字符串。我怀疑你的模型状态真的是无效的,但没有添加消息。或者,这可能是因为标记实际上来自您网页上的其他内容 - 甚至可能使用JavaScript添加。

1

在应用程序设置中检查ClientValidationEnabledUnobtrusiveJavaScriptEnabled。如果它们不在使用中,可以解决这个问题。