У меня есть следующий код в моем классе Home Controller/Viewmodel
public class HomeController : SurfaceController {
....
[AllowAnonymous]
public ActionResult LoginIn()
{
var user = new UserDetail() { FirstName = "FirstName", LastName = "LastName" };
UserDetailViewModel model = new UserDetailViewModel() { User = user };
return PartialView("~/Views/Partials/__LoginPartial.cshtml", model);
}
........
}
public class UserDetailViewModel : RenderModel
{
public UserDetailViewModel() : this(new UmbracoHelper(UmbracoContext.Current).TypedContent(UmbracoContext.Current.PageId)) { }
public UserDetailViewModel(IPublishedContent content, CultureInfo culture) : base(content, culture) { }
public UserDetailViewModel(IPublishedContent content) : base(content) { }
public UserDetail User { get; set; }
}
Далее следует ActionExcuteFilter.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public sealed class ActionExcuteFilter : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (HttpContext.Current.Session == null || Convert.ToInt32(HttpContext.Current.Session["UserId"]) ==0)
{
var myAccountPage = uQuery.GetNodesByType("Login").FirstOrDefault();
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary {
{ "action", "LoginIn" },
{ "controller", "Home" }});
}
base.OnActionExecuting(filterContext);
} }
И на главной странице есть следующая ссылка
http://localhost/Products?categoryId=1, которые относятся к действию контроллера продукта.
Итак, если пользователь получает логин и нажимает на ссылку, все работает нормально. (Означает получение значения из UmbracoContext и отображение соответствующих страниц)
Но когда пользователь щелкает ссылку без входа в систему, начинаются проблемы (получается ошибка при извлечении значений из UmbracoContext )
Итак, исполнение:
Контроллер продукта вызывает > ActionExcuteFilter > RedirectToRouteResult > Home Controller > LoginIn Action > UserDetailViewModel > Выдает ошибку (получение UmbracoContext.Current как null)
Итак, что я пытаюсь сделать, так это то, что когда пользователь пытается получить доступ к странице ..Product?categoryId=1 без входа в систему, он должен быть перенаправлен на страницу входа.
Заранее спасибо :)