2016-04-05 17 views
0

ページングと検索オプションを使用している私のウェブサイトでは、ユーザをリダイレクトして検索オプションを渡す必要があります。このアクションでは、URL(例:http://localhost:1234/?Project.Models.TestModel=...。)を持つ検索モデルを渡す必要はありません。次のように値に基づいてHtml.ActionLinkでパラメータを渡す

私ActionLinkのは、次のとおりです。

@Html.ActionLink(i.ToString(), "Index", new { idtrips = Model.idTrips, inituser = Model.initUser, date = Model.date.ToString("ddMMyyyy"), page = i}) 

クリックすると、これは次のヘッダーになり: http://localhost:58763/?idtrips=0&inituser=0&date=05042016&page=5

私の質問は: HTMLに句場合は、何らかの形で追加することができます.ActionLinkは必要な場合にのみ値を返します。たとえば、私は日付が設定されているだけで、URLはhttp://localhost:58763/?date=05042016&page=5にします。他の値は私のコントローラのデフォルト値を持っているので、このURLは動作しますが、私はそれを生成することができません。

マイコントローラ:

public ActionResult Index(long idtrips = 0, long inituser = 0, string date = "", int page = 1) 
    { ... } 

私が探している何がおそらくternary statement(例えばインライン-if文)でこれを達成することができ、この,:

@Html.ActionLink(i.ToString(), "Index", new { if(Model.idTrips > 0) { idtrips = Model.idTrips,} page = i}) 

答えて

1

のようなものです:

new { idtrips = Model.idTrips > 0 ? Model.IdTrips : 0, page = i} 

あなたはidtripsのデフォルトパラメータ値を持っているので、トン0より大きい場合は、それ以外の値に設定する必要があります。

値がまったく表示されないようにするには、単にnullable long long?パラメータにしますモデルと同様):この方法を使用して

public ActionResult Index(long? idtrips = 0, ...) { ... } 

予想通り、あなたは、単にそれを設定できます

new { idtrips = Model.idTrips, page = i} 

そしてModel.idTrips場合はNULLだった(例えばデフォルト値)、それが指し示すでしょう:

Controller/Index?page=1 

それがnull以外の値だった場合ただし、期待どおり、それはクエリ文字列パラメータをレンダリングします:

Controller/Index?idtrips=42&page=1 
+0

しかし、これはまだ私を与えるだろうURL "http:// localhost:1234 /?Idtrips = 0&page = 5" これは私が避けたいものです。新しい{page = 5}または新しい{Idtrips = 1、page = 5}とインラインのようにする必要があります。 Html.ActionLinkを使ってif文やswitch文を使うのではない –

+0

'idtrips'パラメータをnullにすることをお勧めします。これは、あなたが探している意図した効果を与えます(つまり、nullのときは 'idtrips'パラメータの表示はありませんが、デフォルトは0ですが、それ以外の場合はパラメータが表示されます)。 –

+0

私はそれらをnull値に変更しました。あなたの迅速なサポートをありがとう! –

関連する問題