私のウェブサイト(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 } );
しかし今、すべての私のルートは、ホームコントローラにアクセスしてください。だからこの戦術の私の努力は期待どおりに働いていません。
の前に配置する必要がありますか? –
質問を見て、私は** contact.cshtml **ファイルを作成しなくてもいいので、既定のルートでパラメータとして扱いたいと思っています。つまり、dbを参照し、必要に応じてコンテンツを取り出して表示します。 – ransems
MVCに読み込むと良いでしょう。https://msdn.microsoft.com/en-us/library/dd381412(v=vs.108).aspxさらに、これは非常に質の低い質問です。 – manuzi1