1

可以说我有一条路线;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 不仅是 DB 中的一个条目,而且更像是一种类型。比如,如果这是一个电子商务网站,它可能是“汽车”或“家具”。

所以我正在做的是,我正在检查“某物”是否真的是我的路线约束上的有效“东西”。然后在我的控制器中;

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");
    }
}

并获取我作为参数添加到控制器操作中的 Id

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

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

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

我真的很感激对这个问题的一些见解。

谢谢你。

4

0 回答 0