Я пытаюсь запретить доступ к действию, возвращающему PartialViewResult
; но это кажется невозможным. Если я помечаю метод действия с атрибутом NonAction
, страница не будет отображаться, и если я этого не сделаю, возможно получить этот частичный вид с помощью URL-адреса.
Предположим, у меня есть это в _Layout.cshtml
:Можно ли запретить доступ через URL-адрес к действию PartialViewResult
<section role="navigation">
@Html.Partial("PageParts/Sidebar")
@RenderSection("SidebarContents", required: false)
</section>
и это PageParts/Sidebar.cshtml
:
@Html.Partial("PageParts/Sidebar/Userinfo")
@{Html.RenderAction("getNavigation", "PageSemantics");}
и это PageSemanticsController.cs
:
public class PageSemanticsController : Controller {
public PartialViewResult getNavigation() {
NavigationModel nm = new NavigationModel();
return PartialView("PageParts/Sidebar/Navigation", nm);
}
}
и, наконец, это ~/Views/Shared/PageParts/Sidebar/Navigation.cshtml
:
@model NavigationModel
<nav id="main-nav">
[... Some code to create Navigation ...]
</nav>
Эта настройка работает нормально, кроме ~/PageSemantics/getNavigation
доступна по URL-адресу. Есть ли способ запретить доступ к getNavigation
действию по URL-адресу при сохранении этой настройки?
Спасибо, это возвращает сообщение как 'действие«getnavigation»доступен только ребенок request.' Можно ли вернуть 404 & le; – Achilles
Я только что нашел http://stackoverflow.com/questions/7888121/how-to-prevent-certain-internal-routes-from-being-accessed-by-the-user –
Спасибо, Есть способ вернуть 404 нить :) – Achilles