如果这是用户第一次访问网站的任何页面,如何将用户重定向到其他网址?
如果仅主页需要此代码,则可以在主控制器中添加以下代码:
string cookieName = "NotFirstTimeVisit";
if (!HttpContext.Request.Cookies.AllKeys.Contains(cookieName))
{
// first time, add a cookie.
HttpCookie cookie = new HttpCookie(cookieName);
cookie.Value = "True";
HttpContext.Response.Cookies.Add(cookie);
var url = ConfigurationManager.AppSettings["FirstTimeVisitUrl"];
// redirect to the page for first time visit.
return Redirect(url);
}
但是问题是:用户第一次访问时可能无法浏览主页。例如,用户可能会获得一个共享链接,即https://example.com/shared_001/002,那么它将不会被重定向。
有什么建议吗?
答案 0 :(得分:1)
我创建了一个演示,用于将用户重定向到整个应用程序中的第一次。 您必须覆盖OnActionExecuting 方法,以检查用户是否被提前重定向。
1。为覆盖动作过滤器创建一个类(在动作过滤器之前)。
namespace Example.Helper
{
public class ValidateUserLoggedIn : ActionFilterAttribute
{
/// <summary>
/// Method for redirect to url first time only
/// </summary>
/// <param name="filterContext"></param>
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
try
{
string cookieName = "NotFirstTimeVisit";
if (!HttpContext.Current.Request.Cookies.AllKeys.Contains(cookieName))
{
// first time, add a cookie.
HttpCookie cookie = new HttpCookie(cookieName);
cookie.Value = "True";
HttpContext.Current.Response.Cookies.Add(cookie);
// You can add your URL here
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
(new
{
controller = "Department",
action = "Index"
}
));
}
base.OnActionExecuting(filterContext);
}
catch (Exception ex)
{
throw new Exception(ex.Message.ToString());
}
}
}
}
2。根据您的要求,根据操作,将上述方法调用到控制器,全局文件。
namespace Example.Controllers
{
[ValidateUserLoggedIn] // Action Filter class
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
}
}
注意:如果您对以上代码有任何疑问,请告诉我们。谢谢!