假设我有路线; 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,因此我的控制器操作可能会让未来的开发人员感到困惑。
我非常感谢对这个问题的一些见解。
谢谢。