問題タブ [asp.net-mvc-routing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc-routing - Url.RouteUrl(...) が現在のリクエストからルート値を継承しないようにする方法
ショッピング カートに商品を表示するアクション メソッドがあるとします。
Url.RouteUrl
他の場所では、サイト上の他のページへの HREF リンクを作成するために使用しているすべてのページに表示されるマストヘッドで:
これは、以下の最初のルートtestimonials-route
で定義されています。global.ascx
上記の への呼び出しでRouteUrl
は が提供されませんgender
が、ルートはデフォルトの「中立」で定義されているため、Testimonials.Index("neutral") が呼び出されることが予想されます。
誰かがページにアクセスすると、HREF/products/women
を取得します。/testimonials/women
誰かがページ/products
にアクセスすると、空の HREF を取得します (RouteUrl の呼び出しは null を返します)。
でもそれって意味ないですよね?ルート値を提供しない場合、testimonials-route
デフォルトであるはずですか?'neutral'
何が起こっているかというと、Url.RouteUrl(routeName, routeValues)
ヘルパー拡張機能は最初にrouteValues
パラメーターでgender
ルート値を探し、その辞書で見つからない場合は現在の URL を調べます (Url は UrlHelper オブジェクトであることを思い出してください)。利用可能な現在のリクエストのコンテキストを持っています)。
これは、男性用の製品ページにいる場合、男性用の証言へのリンクを提供するというおそらく良い効果がありますが、RouteUrl
呼び出しで値を渡さず、明示的に「ニュートラル」をglobal.asax.cs
ファイルのデフォルト。
訪問した場合、ルート/products/
をトリガーし、メソッドが呼び出されました。の呼び出しは、 を使用して URL を作成するときに、実際に THIS null 値を継承します。inのデフォルトを' に指定しましたが、依然としてこの null 値を使用しているため、ルートが失敗し、null が返されます。[注: (men|women|neutral) に制約があり、null がそれに適合しないため、ルートは失敗します]'products-route'
Products(null)
Url.RouteUrl()
gender
testimonials-route
gender
'testimionials-route
RouteUrl
実際にはもっと恐ろしいことになります - 「コントローラ」と「アクション」が同じ方法で継承できるという点で。これにより、デフォルトのコントローラーを持つ明示的なルート名で RouteUrl(...) を呼び出した場合でも、URL が完全に間違ったコントローラーに生成される可能性があります。
この場合、問題がわかれば、さまざまな方法で非常に簡単に修正できますが、別のケースでは危険な動作を引き起こす可能性があります。これは仕様によるものかもしれませんが、間違いなく怖いです。
asp.net-mvc - ASP.netMVCURLを変更する方法
このような手間をかけずに新しいRoute-URLを生成する簡単な方法はありますか?
現在、同じビューへの複数のルートを処理しています。これらはすべて/{pagenumber}で終わります。
私がやろうとしているのは、最後の円記号まですべてを削除して、番号を置き換えることだけです。
URL Makerの使用を避けようとしていたのは、ページネーションには少しやり過ぎのようですが、すべての提案を歓迎します…
これがページネーションに使用する方法です
- これのさまざまなビットは通常、完全にするためにそれらを数字に置き換えたアプリ設定から来ています。
asp.net-mvc - フォームが間違ったURLに投稿されています
元のタイトル:誤って構成されたルートを修正できません
フィルタ(4つの可能な値)とユーザーが入力した基準に基づいて検索を行いたい。
私は次のルートを持っています:
および次のフォーム:
フォームはアクションBuscarではなく、SubLineasProductosコントローラーのアクションIndexにリダイレクトされます。ルートが間違っていると思いますが、修正方法がわかりません。私はこの投稿を読みました、そして私が見ることができる限りすべてが私のルートでうまくいっています。
どうすればこれを修正できますか?前もって感謝します。
編集: Philが提供するツールを使用すると、次のようなURLをテストするとわかります。
http://localhost/MyApp/SubLineasProductos/Buscar.aspx/nombre/block
それは私が望むルートと一致します。しかし、アプリケーションを実行して、生成されたURLのフォームが作成される前に投稿されたフォームを使用しようとすると、次のようになります。
http://localhost/MyApp/SubLineasProductos.aspx/Buscar?filtro = nombre&criterio = block
この新しい問題をどのように修正できますか?
asp.net-mvc - ASP.NET MVC ルーティングに関する質問
ASP.NET MVC を使い始めたばかりで、ルーティングに関する質問が 2 つあります。
ASP.NET MVC で次のルートを設定するにはどうすればよいですか?
URLを短くするために、実際のURLにコントローラーを指定したくありません。URL が次のように見えた場合:
CompanyController を追加し、about-us、contact-us、staff-bios の ActionResults を設定して、適切なビューを返すことができるので、私にとってはより理にかなっています。私は何が欠けていますか?
Global.asax の既定のルーティング規則で、"既定" という名前にはどのような目的がありますか? 何かに使われていますか?
ありがとうございました!
asp.net-mvc - ASP.NET MVC - 暗黙的なフォーム アクション
部分ビューの一部であるフォームがあり、フォームを含むビューのコンテキストに基づいて別の場所にフォームを送信する必要があります。フォームには multipart/form-data enctype があるため、Html.BeginForm を使用できません。そのため、アクションが自動的に入力されることはありません。
現在のコントローラー/アクションをフォームアクションとして入力するために呼び出すことができる単純な変数はありますか? ViewContext.RouteData.Values["action"]、ViewContext.RouteData.Values["controller"] がこれらの値を返すことがわかりますが、より良いアクセサーはありますか?
ありがとう!
asp.net-mvc - Global.asax 外の RouteCollection に新しいルートをマップできますか?
Global.asax RegisterRoutes() メソッドが最初に実行された後、プログラムの実行中に新しいルートを RouteCollection に時々マップしたいと思います。
これどうやってするの?
c# - ViewContext.RouteData.Values["action"]はサーバーではnullです...ローカルマシンでは正常に動作します
ステージングサーバーではViewContext.RouteData.Values["action"]がnullであるという奇妙な問題が発生していますが、開発マシン(asp.net開発サーバー)では正常に機能します。
コードは単純です:
ViewContext.RouteData.Values["action"]行でエラーが発生します。エラーは次のとおりです。
例外の詳細:System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。
どんな助けでも大歓迎です。前もって感謝します。
asp.net-mvc - コントローラーアクションの内側/近くにルートを設定しますか?
約 10 の stackoverflow.com ポッドキャスト バックで Jeff は、global.asax ファイル内でルートを配線する代わりに、ルートが呼び出すアクションの近くのコントローラー内にそれらを配置したと述べました。
これを行うにはどうすればよいですか?
ルーティング先のコントローラーがヒットする前に、ルートを登録する必要はありませんか? 彼はコンストラクターでそれを行いますか?ここでの鶏と卵の問題に頭が混乱しています。