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 のエントリではなく、型に似ていると考えてください。たとえば、これが 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 が含まれていないため、コントローラーのアクションは、このコードを見る将来の開発者にとって混乱を招く可能性があります。

この問題についての洞察をいただければ幸いです。

ありがとうございました。

4

0 に答える 0