在RouteConstraint

时间:2017-01-02 08:33:05

标签: c# .net model-view-controller routing route-constraint

假设我有路线; www.kunduz.com/stuff/something

其中"某事"正在根据路线约束检查;

 public class AnalysisTypePathRouteConstraint : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
       //check if "something" is really something
    }
}

并且假设东西有这样的结构

public class Stuff
{
     public int Id{get;set;}
     public string name {get;set;}
     //some other properties
}

考虑对象Stuff不仅仅是数据库中的一个条目,更像是一个类型。就像,如果这是一个电子商务网站,它可能是"汽车"或"家具"。

所以我正在做的是,我正在检查是否有什么""真的是一个有效的" Stuff"在我的路线约束。然后在我的控制器中;

Public class SomeController
{
    public GetStuff(string stuffName)
    {
        //get stuff by its name and get its Id
        //use that Id to do something else
    }
}

现在,我也可以做这个

 public class AnalysisTypePathRouteConstraint : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
       //check if "something" is really something
       values.Add("stuffId",stuff.Id");
    }
}

并获取我已添加为我的控制器操作的参数

    public GetStuff(int stuffId)
    {
        //get stuff by its name and get its Id
        //use that Id to do something else
    }

这可能会提高性能,对我来说更有意义的是我应该避免两次尝试Id。

我的问题是,这是一个好习惯吗?由于我的URL不包含sutffId,因此我的控制器操作可能会让未来的开发人员感到困惑。

我非常感谢对这个问题的一些见解。

谢谢。

0 个答案:

没有答案