Jak korzystać z obszaru w ASP.NET Rdzeń
Jak używać Area
w ASP.NET Rdzeń? Nie jest to właściwie udokumentowane!
Przypuśćmy, że mam aplikację, która potrzebuje sekcji administratora. Ta sekcja wymaga, aby jej widoki były miejscami w tym obszarze. Wszystkie żądania zaczynające się od Admin/
będą musiały zostać przekierowane do tego obszaru.
2 answers
W celu uwzględnienia obszaru w ASP.NET Core app, najpierw musimy umieścić trasę konwencjonalną w pliku Startup.cs
(najlepiej umieścić ją przed dowolną trasą spoza obszaru):
W Startupie.metoda cs / Configure:
app.UseMvc(routes =>
{
routes.MapRoute("areaRoute", "{area:exists}/{controller=Admin}/{action=Index}/{id?}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Następnie utwórz folder o nazwie Areas
w głównym katalogu aplikacji i utwórz inny o nazwie Admin
wewnątrz pierwszego, również Utwórz te foldery w Admin
(viewcomponent jest opcjonalny):
Teraz tworzymy kontroler wewnątrz folderu Controllers
nazwa AdminController
, zawartość może być taka:
[Area("Admin")]
[Route("admin")]
public class AdminController : Controller
{
public AdminController()
{
// do stuff
}
public IActionResult Index()
{
return View();
}
[Route("[action]/{page:int?}")]
public IActionResult Orders()
{
return View();
}
[Route("[action]")]
public IActionResult Shop()
{
return View();
}
[Route("[action]/newest")]
public IActionResult Payments()
{
return View();
}
}
Teraz, aby to zadziałało, musisz utworzyć widoki dla wszystkich działań, które zwracają jeden. Hierarchia widoków jest taka sama jak w folderze widoków spoza obszaru:
/ Align = "left" /Pytanie: Co zrobić, jeśli mam inny kontroler w moim obszarze?
Odpowiedź:
Wystarczy dodać inny kontroler obok AdminController
i upewnić się trasy są następujące:
[Area("Admin")]
[Route("admin/[controller]")]
public class ProductsController : Controller
{
public ProductsController()
{
//
}
[Route("{page:int?}")]
public IActionResult Index()
{
return View();
}
}
Ważną częścią jest [Route("admin/[controller]")]
. Dzięki temu możesz zachować styl routingu do admin/controller/action/...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-21 13:33:20
Rusztowanie wygenerowało wszystkie pliki i dodało wymagane zależności.
Jednak kod startowy aplikacji może wymagać dodatkowych zmian, aby wszystko działało od końca do końca. Dodaj następujący kod do metody Configure w klasie startowej aplikacji, Jeśli jeszcze nie został wykonany:
app.UseMvc(routes =>
{
route.MapRoute(
name : "areas",
template : "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-16 12:28:35