2016-05-25 2 views
0

私は2つのWebサイトが実際のものと、もう1つは仮想ディレクトリにあります。そのうまくいっている:www.mywebsite.com/AnotherWebsiteの最初の読み込み。 MVCルーティング:サブドメイン下で動作しません

しかし、私は次のような方法にwww.mywebsite.com/Home/Indexに戻っている私のビューを使用してフィルタリングしようとしていますが、私はwww.mywebsite.com/AnotherWebsiteのように滞在する必要がありますしてinitail負荷後の

/ホーム/インデックス

public ActionResult Index(int? pageNumber, string categories) { 
    if (!string.IsNullOrEmpty(categories)) { 
     Session["Categories"] = categories; 
     pageNumber = 1; 
    } 
    if (sessionCategoriesValue != "all") { 
     return View("AnotherWebsite/Home/Index", results.ToPagedList(pageNumber ?? 1, 15));       
    } 
    else { 
     return View(Url.Content("~/")+"AnotherWebsite/Home/Index", results.ToPagedList(pageNumber ?? 1, 15));  

    } 
} 

しかしwww.mywebsite.com/AnotherWebsite/Home/Index?pageNumber=2 &カテゴリ= nullを

マイMapRouteがlであるように私のページングが正常に動作していますあなたのご意見はありがとうございます。

routes.MapRoute(name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

+0

わからない、しかし、あなたは、単に 'routes.MapRoute(名前に自分のルートのマッピングを変更した場合にどのような: "Default"、url: "AnotherWebsite/{controller}/{action}/{id}" '...? – LocEngineer

+0

今すぐ試してみてください。ありがとう、私はあなたにお知らせします –

答えて

0

RouteConfig.csカスタムルーティングを試したことがありますか?

http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/creating-custom-routes-cs

RouteConfig.cs:

public class RouteConfig { 

    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.MapRoute(name: "AnotherWebsite", url: "AnotherWebsite/{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }); // this route should take place on top of default routing 
     routes.MapRoute(name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 
    } 
} 

この方法は、十分に満足していない場合は、MapRoute上のURLセクションには限りが含まとして、あなたが好きなのために変更されることがあります「{コントローラ}/{action}/{id} "ルーティングルール。

  • 補遺編集 -

は、サブドメインがでRequest.ServerVariablesを使用してリダイレクトすることができますようだ(サブドメイン、ご希望のサブドメイン名です):

Controller.cs

// Note: "HTTP_URL" contains encoded raw URL data 
// If you want unencoded version one, use "UNENCODED_URL" 
if (String.IndexOf(Request.ServerVariables("HTTP_URL").ToUpper(), subDomain.ToUpper()) > 0) 
{ 
    return RedirectToAction("youractionname", "yourcontrollername", new { // your action parameters here }); 
} 

または "Contains"を使用してください。

if (Request.ServerVariables("HTTP_URL").ToUpper().Contains(subDomain.ToUpper())) { 
     return RedirectToAction("youractionname", "yourcontrollername", new { // your action parameters here }); 
} 

コントローラソリューションが動作しない場合は、使用がリライトURLをIIS:

<rule name="YourRule" enabled="true"> 
<match url="(.*)" ignoreCase="true" /> 
<conditions> 
<add input="{HTTP_HOST}" pattern="- insert your subdomain regex pattern here-" /> 
</conditions> 
<action type="Redirect" url="yourdomain.ext/{R:0}" appendQueryString="true" redirectType="Permanent" /> 
</rule> 

参考:https://host4asp.net/top-iis-rewrite-rules/

+0

hin @山本哲也はまだ働いていません。コントローラーで何かする必要がありますか? –

+0

http:// localhost/Home/Index?pageNumber = 1&categories = xls;フィルタリングを選択するとき –

+0

編集した投稿にコントローラソリューションとIIS書き換えルールの例を追加しました。あなたのリダイレクト問題を解決できることを願っています。 –

関連する問題