2017-11-17 11 views
0

私はMVCシステムと従来のasp.netで書かれたウェブサイトを交換していますMVCアプリケーションのaspxページでのリダイレクト?

私たちが使用して簡単に変更することはできませんサードパーティのシステムは、フォーマット

http://websiteのURLを使用できるように期待していますURLここに/?検索タイプ=両方&のparam1 = VALUE1 & PARAM2 = value2の

私は両方

http://websiteここにURL /ホーム/ FindByIdentifier?検索タイプ=にこれをリダイレクトする必要がありますparam1 =値1 & param2 =値2

どうすればよいですか?そのような行動へのリダイレクト?

これが複雑な場合は、システムが現在ホストされているAzure内で、アプリサービスとしてこの種のことが可能ですか?カミソリは、このような

+1

カスタムルートがあなたのためにそれがうまく処理する必要があります。 –

+0

これについて新しい例が考えられますか? – Paul

答えて

0

何かが追加

ポールを見て

そのは、基本的には、サードパーティのシステムを作る場合は、まだ何も変更されているかのように機能し

私の新しいアプリケーションは、C#のMVC5を使用して、あなたのホームコントローラ

public ActionResult Here() 
{ 
    var url = $"Home/FindByIdentifier{Request.Url.Query}"; 
    return Redirect(url); 
} 
+0

私はこのメソッドを検索と呼ぶでしょうか?私は今すぐ確認できません – Paul

+0

ここでの重大な問題は、私のレガシーシステムがindex.aspxというファイルを見つけようとしていることです。ここにリストアップされているソリューションは、レガシーシステムによって呼び出されることのない私のホームコントローラを変更することを含んでいますか?これによりindex.aspxが呼び出されます – Paul

0

私は申し訳ありませんが、明らかに、ルーティングルールはgetパラメータを無視します。私は制約として正規表現を適用する点に到達しようとしたが、それは実際にはgetのパラメータを無視します。

私はすべてルートを使用してリクエストを正しくルーティングしています。 get paramsを使用してこの操作を行う方法がわかっている場合は、お知らせください。

私はリダイレクトの代替方法を試していませんでしたが、これまでのところこれが最良の選択だと思います。 あなたHomeControllerでこれを考えてみましょう:

public IActionResult Index() 
    { 
     if (Request.QueryString != null && !string.IsNullOrEmpty(Request.QueryString.Value) && System.Text.RegularExpressions.Regex.IsMatch(Request.QueryString.Value, @"^\?searchtype\=both(\&.+\=.+)*$")) 
      return Redirect($"/home/FindByIdentifier{Request.QueryString.Value}"); 

     return View(); 
    } 

    public IActionResult FindByIdentifier() 
    { 
     var getParameters = Request.QueryString.Value;//?searchtype=both&param1=value1&param2=value2 
     return View(); 
    } 
関連する問題