4

asp.net MVC のクエリ文字列から null または空のキーを削除する方法はありますか? たとえば、結果テーブルでデータをフィルター処理するページがあるとします。John を検索すると、クエリ文字列は次のように再表示されます。

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

そしてそうではない

candidates?FirstName=John

私は URL ルーティングを調べましたが、それがこのような表面的なものに使用されるべきものなのか、それを使用して私が求めていることを達成できるのかどうかはわかりませんでした.

4

4 に答える 4

2

その URL をどのように生成していますか? ルーティングでは、それらがクエリ文字列に含まれることを意図している場合、正常に機能するはずです。指定した RouteValues のクエリ文字列パラメーターのみを生成します。

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

于 2009-07-20T20:59:23.790 に答える
0

おそらく、このQuerystring Builderを使用してください- Request.QueryString 辞書でクエリ文字列を反復し、ビルダーを使用して新しいものを作成します (または単にそれらを文字列連結します)?

于 2009-07-20T23:17:03.030 に答える
0

さまざまなビューで使用されるパーシャルのルート値に取り組む必要がある場合があります。

次に、通常は routeDictionary にアクセスして変更します。得られる利点は、コードがルーティングの変更に耐えられる可能性が高く、生成された複数の URL で routeValues を使用できることです。

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

ビューコード:

   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))
   { %>
于 2009-07-20T22:33:03.213 に答える
0

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

于 2009-07-20T20:31:19.167 に答える