可以说我有一条路线;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,因此我的控制器操作可能会让未来查看此代码的开发人员感到困惑。
我真的很感激对这个问题的一些见解。
谢谢你。