asp.net-mvc – ModelState.IsValid不排除必需的属性
|
我试图排除一个必需的属性(密码),因此模型状态不会验证该属性,但由于某种原因,即使我尝试排除它,它仍然会验证. 控制器: [Authorize,AcceptVerbs(HttpVerbs.Post)]
public ActionResult _Edit(int id,[Bind(Exclude = "Password")]FormCollection collection)
{
var user = Proxy.GetUser(id);
TryUpdateModel(user,null,new[]{"Password"});
if(!ModelState.IsValid)
return PartialView(user);
Proxy.UpdateUser(user);
}
视图: ...
<tr>
<td class="label">
<label class="row_description" for="Password"><%= S._("Password")%></label>
</td>
<td>
<%= Html.Password("Password",new { @class = "row_input" })%>
<%= Html.ValidationMessage("Password","*")%>
</td>
</tr>
用户(使用dataannotation): [Required]
public string Password { get; set; }
我使用的是VS2008,MVC2,firefox 也许我只是累了,看不到它.任何帮助表示赞赏 解决方法我目前遇到与MVC3类似的问题.尽管我的Action中有[Bind(Exclude =“Password”)],但ModelState.IsValid仍然返回false. 我注意到TryUpdateModel(user,new string [] {“Password”});成功更新模型;但仍然是假的.然后我发现(在stackoverflow的某个地方,抱歉没有链接),TryUpdateModel实际上返回了ModelState.IsValid. 因此,问题不在于TryUpdateModel,而在于ModelState.IsValid. 注意:这也意味着您不需要两次验证…您可以使用此代码: if (!TryUpdateModel(user,new string[]{"Password"}))
return PartialView(user);
因此,问题似乎是ModelState仍在验证已从FormCollection中排除的属性. 我能够通过在调用TryUpdateModel之前从ModelState中删除字段来克服这个问题: ModelState.Remove("Password");
请注意,TryUpdateModel仍然需要根据上述代码从更新中排除属性列表. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 为什么asp.net会员资格有用户表和会员表?
- 三重报价?如何在ASP.NET中分隔数据绑定的JavaScript字符串
- asp.net – 使用HTML标记到web.config文件
- asp.net-mvc – 什么是适当的时间为ViewData,ViewBag,会话,
- asp.net中让Repeater和GridView支持DataPager分页
- asp.net-mvc-3 – 如何通过HTML类(Razor语法)在MVC视图中创
- ASP.NET对txt文件相关操作(读
- 如何在ASP.NET中以程序方式模拟HTTP POST?
- asp.net-mvc – ASP.NET MVC / IIS 7.5:500内部服务器仅针
- asp.net – 如何在web.config中增加执行sql查询的时间
- 最佳实践:ASP.NET中的CSS或主题?
- 捕获到ASP.NET ASMX Web服务的SOAP请求
- asp.net-mvc – 在ASP.NET MVC中实现工作单元的方
- asp.net-mvc-3 – 如何在MVC3自定义编辑器模板中
- asp.net – 关键字不支持:’server’
- asp.net – 如何在web.config中指定根(/)位置?
- .net – MVC – 是模型查看还是控制器查看?
- asp.net – 在fileupload中选择立即调用C#函数文
- asp.net-mvc-3 – 为什么ValidationSummary(true
- asp.net核心 – 无法在IISExpress中启动ASP.NET
