2009-07-20 7 views
4

asp.net MVCのクエリ文字列からnullキーまたは空のキーを削除する方法はありますか?私は、URLルーティングに見えたがasp.netのクエリ文字列からヌル/空のキーを削除するMVC

candidates?FirstName=John&LastName=&Credit=false&Previous=false&Education=&Progress= 

なく

candidates?FirstName=John 

:たとえば、私はジョンを探しているかのようにクエリ文字列が再表示されるだろう、私は結果テーブルにデータをフィルタリングするページがあります私はそれがこのような化粧品に使用されるべきものか、それを使用して求めるものを達成することが可能かどうかはわかりませんでした。

答えて

2

ものは、それが正常に動作する必要があり、クエリ文字列であることを意味している場合はどのようにして、ルーティングを?そのURLを生成している。私たちは、唯一、指定RouteValuesのためのクエリ文字列パラメータを生成します。

私が過去に行ったことの1つは、ルート値のオブジェクトを渡す可能性のある特定のリンクに対して独自のヘルパーメソッドを作成することですが、渡す前に必要のない値をクリアしたい

+0

この場合、ルートによって生成されていません。getメソッドを使用してクエリを絞り込むだけのフォームです。これを処理するより良い方法はありますか? –

+0

私はこの質問をして以来、しばらくしていますが、これは私が行った解決策に終わった、ありがとう。 –

0

これらの不要なタグをリストから削除するには、URLジェネレータまたはコントロールに特別なロジックが必要です。 Credit=falseが役に立たないという一般的なURLジェネレータやコントロールには明らかではありません。Credit=trueがデフォルトですか?同様に、空の文字列は何かを意味します。 (また、Lastname=Lastname異なっている。

+0

実際のロジックを書くのは私には分かりませんでしたが、どこでどのように処理するか、URLルーティング、コントローラ内で行うか、アドオンでIIS経由で行うかはわかりませんが、 Apacheのmod_rewriteに似たものです。 –

+0

ああ、私はasp.net-MVCを使用していることに気付きました。しかし、それはまた私に答えて、申し訳ありません:)無条件になります。 –

0

時々、私のルート値をvariuosビューで使用される部分で処理する必要があります。

私はいつもrouteDictionaryにアクセスしてそれを変更します。あなたが得られる利点は、コードがルーティングの変更に耐えることができ、複数の生成されたURLでrouteValuesを使用できるということです。

ほとんどの人は、このコードの最適な場所はビューではないと主張します。しかし、うまくいけば、あなたはそのアイデアを得ます

ビューコード: - 場合、Request.QueryString辞書に反復処理のクエリ文字列とビルダーを使用して、新しい1つ(または単に文字列連結して)構築

RouteValueDictionary routeValues = ViewContext.RouteData.Values; 
    routeValues.Remove(...); 
    routeValues.Add(...); 
    routeValues["Key"] = ...; 

    <% 
     using (Html.BeginForm(
      Url.RequestContext.RouteData.GetRequiredString("Action"), 
      Url.RequestContext.RouteData.GetRequiredString("Controller"), 
      routeValues, 
      FormMethod.Get)) 
    { %> 
0

これはPostを参照すると、asp.net mvcでどのように行われているかを正確に確認できます。

関連する問題