我将解释一个通用场景。为了解释我的问题,我需要一些耐心,直到我解释我是如何实现我的搜索页面的。我有一个[用户]表和一个[地址]表,据此我推导出SQL中的VIEW - [vw_User_Addr]。我使用L2S,以便获得一个强类型的vw_User_Addr类。MVC通用搜索和模型验证问题
现在我已经搜索页面所以显然我会从这个类派生喜欢它:
<%@ Page Title="User Search" ... Inherits="System.Web.Mvc.ViewPage<MyDAL.vw_User_Addr>" %>
我的列表操作返回,我在视图中使用,形成网格表列表。一切都很好,直到这里。现在我想在此页面上实现搜索。所以这就是我发现的 -
- 在控制器列表动作期间,我创建ViewData [“Usr”] = new vw_User_Addr();
以我查看我做的:
<%MyDAL.vw_User_Addr USR = ((MyDAL.vw_User_Addr)(计算机[ “USR”])); %>
然后我用这种 “USR” 对象绑定像我的搜索控制:
<%= Html.TextBox( “姓”, usr.FirstName)%>
在我HttpPost处理动作最后我反对vw_User_Addr这样的:
[HttpPost]公众的ActionResult 列表(vw_User_Addr searchObj){...}
我用这个searchObj提取用户可能会在搜索控件已填充值,然后我进行搜索。
所以,我希望我解释好。这是我在MVC2中进行搜索的方式。我这里还有我的顾虑/问题:
当我点击搜索图像按钮,我得到一个回发,但它触发一个ModelValidation这给错误。不是所有的,但至少是那些int(即像角色下拉搜索控制) - 如何处理?
经过大量的R & D我已经解决了我要么做ModelState.Clear();或者更复杂的方式来处理这个问题。有更好的选择吗?
有没有更好的方法来实现上述的搜索实现?我是否使用标准\最佳方式在MVC中进行搜索?
在核心级,可我让L2S明白,这是SQL视图,其只读的,所有的字段可以为NULL - 这样的Mr.DefaultModelValidator不执行这样的不合逻辑的验证?
如果4.是可行的,我可以设置L2S视图中所有字段的属性是只读的吗?
谢谢您的宝贵时间和审查。如果我不在赛道上,请引导我。我相信这是最简单的搜索场景,所以它很容易。只需要找到缺少的链接。