簡體   English   中英

在ASP.Net Core 2 MVC中路由

[英]Routing in ASP.Net core 2 MVC

我現在已經在MVC上工作了大約1年,但實際上並不需要深入研究路由,而只是使用常規的Defaults。 在一個新的應用程序中,我現在需要調整這些內容,並且無法弄清楚它是如何工作的。

我的處境我有一個應用程序,該應用程序從一個視圖開始,該視圖帶有數據庫中不同日歷的列表。 這些日歷中的每個日歷都應具有如下網址:

家庭/日歷名稱/周數

->基於日歷名稱的控制器/動態字符串/基於所選星期的動態int

問題是我不想為每個CalendarName->日歷創建一個動作。

我的問題可以理解嗎?

這是我的Startup.cs代碼atm:

app.UseMvc(routes =>
            {
                routes.MapRoute(
                  name: "test",
                  template: "test",
                  defaults: new { controller = "Home", action = "Name-Of-Calender", id="WeekID_Of_Calendar" });


                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=KalenderListe}/{id?}");
            });

這是View atm中的URL-Action。

"@Url.Action("View", "Home", new {KalenderName= kalender.KalenderName,Id= kalender.KalenderId})"

如果不清楚我要做什么,請告訴我,我會進行調整。 提前致謝。

對於您的問題,可以在操作方法上使用屬性路由。 只需像下面這樣在您的路由中寫入字符串

`

[Route("Home/About")]
   public IActionResult MyAbout()
   {
      return View("About");
   }
   [Route("Home/Contact")]
   public IActionResult MyContact()
   {
      return View("Contact");
   }

`

您也可以根據需要進行更改

`

[Route("About/Home")]
   public IActionResult MyAbout()
   {
      return View("About");
   }

`

您可以在家庭控制器中的操作上使用屬性路由。

[HttpGet("{calendarName}/{id}")]
public void ActionResult GetCalendar(string calendarName, int id)
{
    ...
}

或者,如果您希望將傳遞為可選查詢

[HttpGet("{calendarName}")]
public void ActionResult GetCalendar(string calendarName, [FromQuery]int id)
{
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM