Я бы порекомендовал вам написать собственный движок просмотра. Таким образом, ваша структура может выглядеть так:
- Просмотров
- Home
- Index.aspx // версия по умолчанию
- UA1
- Index.aspx // версия для пользовательского агента 1
- UA2
- Index.aspx // версия для пользовательского агента 2
- Общий
И тогда есть пользовательский механизм просмотра:
public class CustomViewEngine : WebFormViewEngine
{
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
{
string ua = controllerContext.HttpContext.Request.UserAgent;
if (ua == "UA String 1")
{
return base.FindView(controllerContext, "UA1/" + viewName, masterName, useCache);
}
if (ua == "UA String 2")
{
return base.FindView(controllerContext, "UA2/" + viewName, masterName, useCache);
}
return base.FindView(controllerContext, viewName, masterName, useCache);
}
}
И, наконец, зарегистрируйте механизм просмотра в Application_Start
:
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new CustomViewEngine());
Таким образом, ваш контроллер и действия строго одинаковы, и на основе заголовка HTTP User-Agent
будет использоваться правильное представление. Все, что вам нужно сделать, когда вам нужно обработать UA3
, это добавить соответствующий вид в папку UA3
. Не нужно трогать контроллеры и модели.