ルートがあるとしましょう。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 のエントリではなく、型に似ていると考えてください。たとえば、これが e コマース サイトである場合、「車」または「家具」である可能性があります。
だから私がやっていることは、ルート制約で「何か」が本当に有効な「スタッフ」であるかどうかを確認していることです。次に、コントローラーで;
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
}
これによりパフォーマンスが向上すると思われます。
私の質問は何ですか、これは良い習慣ですか?私の URL には sutffId が含まれていないため、コントローラーのアクションは、このコードを見る将来の開発者にとって混乱を招く可能性があります。
この問題についての洞察をいただければ幸いです。
ありがとうございました。