2017-09-27 4 views
0

私のウェブサイト(MVC)のルートに移動するとmysite.com/私は素晴らしいHome/Indexアクションが動作します。しかし、mysite.com/Homeとmysite.com/aboutとmysite.com/contactにアクセスして、Home/Index.cshtmlとページ名に移動していても別のコンテンツを表示したいパラメータとして渡されています。MVC Webサイトのルートから複数のページ名を1つのコントローラにパラメータとして割り当てます

新しいコントローラ名の連絡先を作成してmysite.com/contactに移動しても、私はContactControllerを使用して問題ありません。

これは実装するのが可能か簡単ですか?

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult About() 
    { 
     ViewBag.Message = "Your application description page."; 

     return View(); 
    } 

    public ActionResult Contact() 
    { 
     ViewBag.Message = "Your contact page."; 

     return View(); 
    } 
} 

デフォルトのプロジェクトを追加するコントローラコードが追加されました。しかし、私は除外したいお問い合わせアクション結果、およびインデックスをパラメータとして処理します。コントローラで

public ActionResult Index(string pageName) 
    { 

     // do something with parameter, pull data from db and return view 

     return View(); 
    } 

私のActionResult:

public ActionResult Index(string Id) 
    { 
     if (Id != null) 
     { 
      // get HTMl from DB 
      // build viewModel 
      return View(viewModel); 
     } 
     else 
     { 
      return View(); 
     }    
    } 

私は、次のURLのに行けば、私は 成功二回取得: /Website/index/About-Us =成功

クエリ文字列として/?Id=About-Us =成功

/About-Us =期待通りの成功!ワフー

マイルート:routes.MapRoute( "Home", "{id}", new { controller = "Website", action = "Index", area = "", id = UrlParameter.Optional } );

しかし今、すべての私のルートは、ホームコントローラにアクセスしてください。だからこの戦術の私の努力は期待どおりに働いていません。

+0

の前に配置する必要がありますか? –

+0

質問を見て、私は** contact.cshtml **ファイルを作成しなくてもいいので、既定のルートでパラメータとして扱いたいと思っています。つまり、dbを参照し、必要に応じてコンテンツを取り出して表示します。 – ransems

+0

MVCに読み込むと良いでしょう。https://msdn.microsoft.com/en-us/library/dd381412(v=vs.108).aspxさらに、これは非常に質の低い質問です。 – manuzi1

答えて

0

RouteConfig.csの次の設定を使用して、ホームテキストをURLから削除できます。下のコード行を入力してください。

routes.MapRoute(
    "Home", 
    "", 
    new { action = Index, controller = Home } 
); 

注:コードの線の上にあなたのコントローラのコードは次のようになりますどのように

routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Dashboard", action = "Login", id = UrlParameter.Optional } 
      ); 
+1

ありがとう@マンナンこれは、私が正しい道を始めると、今答えは上記ですが、 – ransems

関連する問題