Лучший способ перенаправить все представления в одно представление (например, UnderConstructionView) - PullRequest
2 голосов
/ 03 февраля 2012

Можно ли как-то перенаправить все виды на один конкретный вид?Я хотел бы иметь «Строящийся вид», который всегда является видом по умолчанию, пока я не «щелкну выключателем» без необходимости строить.До тех пор все другие действия контроллера направляются в это представление.

Я хотел бы знать, могу ли я сделать это в web.config или мне нужно иметь некоторые if / else в RegisterRoutes в Global.asax.

Ответы [ 2 ]

8 голосов
/ 03 февраля 2012

вы можете написать собственный атрибут фильтра, который читает флаг из web.config и перенаправляет запросы на страницу в разработке.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Configuration;

namespace MyApp
{
    public class UnderConstAttribute : ActionFilterAttribute
    {
        private readonly static AppSettingsReader _reader;
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
              _reader = new AppSettingsReader();
              if(_reader.GetValue("UnderConst", typeof(bool)))
                 filterContext.HttpContext.Response.Redirect("/Underconst.html");
        }
    }
}

и вам нужно добавить ключ в файл web.config

<appSettings><add key="UnderConst" value="false"/></appSettings>

и вы должны добавить этот фильтр в коллекцию фильтров глобальных действий в файле global.asax

7 голосов
/ 03 февраля 2012

Поместите файл с именем app_offline.htm в корень вашего каталога, и он будет отображаться для всех запросов.

После удаления (или переименования) этого файла ваши веб-запросы будут снова обрабатываться как обычно.

...