HttpGet上的MVC验证

时间:2014-05-30 02:24:03

标签: c# asp.net-mvc

我有一个连接到HttpGet方法的搜索表单

[HttpGet]
public ActionResult Search(Filter filters){
{
   ...
}

我希望能够做的是模态验证,它是在HttpPost中完成的。但是,我不想使用HttpPost方法,因为我想允许用户能够为他们的搜索结果添加书签。 过滤器是我的dto。

有没有办法可以在HttpGet方法中提高验证效果?像..

 if (!filters.Name.HasValue)
            {
                this.ModelState.AddModelError("Name", "THis is a required    Field...");

或使用数据注释

public class Filter {
    [Required]
    string Name {get;set;}
...

不确定这是否正确。同样,我不确定哪种方法最好。任何帮助/建议都会很棒。

1 个答案:

答案 0 :(得分:1)

是的,这很好。

模型绑定和验证并非要求 HTTP方法为POST

尝试尽可能使用数据注释。它们干净而优雅。如果需要,可以创建自己的。

请记住,数据注释验证应该很简单;即检查是否填充了值并满足最基本的要求(长度,数据类型)。之后,可以进行更严格的验证(如果需要)。

然后,您需要返回一个足够的视图,向用户显示搜索结果或搜索的任何问题,以便他们可以重试。

我可以添加更多内容来回答您的问题。你的方法很好。