Размышляя над ответом Павла.Я не использую никаких специальных механизмов просмотра, но вот что я делаю:
1) Создайте PublicController.cs.
// GET: /Public/
[AllowAnonymous]
public ActionResult Index(string name = "")
{
ViewEngineResult result = ViewEngines.Engines.FindView(ControllerContext, name, null);
// check if view name requested is not found
if (result == null || result.View == null)
{
return new HttpNotFoundResult();
}
// otherwise just return the view
return View(name);
}
2) Затем создайте публичный каталог в представленияхпапку, и поместите все ваши взгляды туда, что вы хотите быть публичными.Лично мне это было нужно, потому что я никогда не знал, хочет ли клиент создавать больше страниц без перекомпиляции кода.
3) Затем измените RouteConfig.cs, чтобы перенаправить его на действие Public / Index.
routes.MapRoute(
name: "Public",
url: "{name}.cshtml", // your name will be the name of the view in the Public folder
defaults: new { controller = "Public", action = "Index" }
);
4) Затем просто ссылайтесь на это из своих представлений следующим образом:
<a href="@Url.RouteUrl("Public", new { name = "YourPublicPage" })">YourPublicPage</a> <!-- and this will point to Public/YourPublicPage.cshtml because of the routing we set up in step 3 -->
Не уверен, что это лучше, чем использование фабричного шаблона, но мне кажется, что его проще всего реализовать и понять..