ASP.NET MVC请求拦截并获取模型值

时间:2014-10-15 11:44:23

标签: c# asp.net asp.net-mvc

我有很多控制器,它们根据参数返回数据。

但是用户可以伪造他们发送给服务器的参数,所以我想拦截所有请求,如果某些参数随模型返回无效,则发出警告/错误。

控制器的示例标题是这个

[Intercept<CarModel>] <-- I want something like this, <CarModel> because the interceptor knows what type to cast the model when intercepted
public object Cards(CarModel model) {

我想创建这种属性,拦截控制器,检查模型是否有效。

我怎么能这样做?我用Google搜索了一下,但没有找到这样的东西。

1 个答案:

答案 0 :(得分:1)

只需将验证码放入操作中即可。更好的是,从IValidatable接口继承并在所有模型上实现HasPropertiesValid()。然后你只需要调用model.HasPropertiesValid();在你的行动开始时。

可验证的界面

interface IValidatable {
    bool IsPropertiesValid();
}

模型示例

public class CarModel : IValidatable {
    public string ModelName {get;set;}
    public string ManufacturerName {get;set;}
    public bool IsPropertiesValid() {
        if(ManufacturerName == "Toyota") { 
            if(ModelName == "Prius") return true;
        }
        return false;
    }
}

控制器

public ActionResult ToyotaCar(CarModel model){
    if(!model.IsPropertiesValid()) return RedirectToAction("QuitMessingAround","CaughtYou");
}