我想在有人点击文字链接时创建一个Cookie。我们的想法是,如果他们之前没有点击它,他们只会看到链接,一旦他们点击它,就会创建cookie。我检查cookie是否存在,如果存在,则不显示链接。
以下是我的控制器来创建Cookie:
public class SurveySurfaceController : Umbraco.Web.Mvc.SurfaceController
{
[HttpPost]
[ActionName("ClickedSurvey")]
public ActionResult ClickedSurvey()
{
// Create a cookie if the link is clicked.
HttpCookie myCookie = new HttpCookie("surveyCookie");
Response.Cookies.Add(myCookie);
return CurrentUmbracoPage();
}
}
当有人点击我的PartialView中的文字链接时,如何调用此ActionResult
以下是视图
中的链接<a href="https://www.surveymonkey.com/r/XW9FHF7" target="_blank">Some Survey</a>
我想要的是在有人点击链接时拨打ActionResult
。
有没有一种不使用JavaScript的好方法?
答案 0 :(得分:4)
...添加
@Html.ActionLink("Some Survey","ClickedSurvey","SurveySurfaceController")
而不是您的<a>
链接
对于surveymonkey,您的操作应该重定向到该链接 - 使用Response.Redirect(somePage);
答案 1 :(得分:2)
如果您不想重新加载页面,则必须使用AJAX
进行此操作,否则请为此特定操作创建action link
@Html.ActionLink("Link Text,"ClickedSurvey","SurveySurface") //generates an achor tag
此外,您还需要当前的HTTP上下文,以便在MVC中设置cookie
System.Web.HttpContext.Current.Response.Cookies.Add(yourcookie)
也用于重定向使用
return Redirect("your Url")
答案 2 :(得分:2)
我可以看到三种可行的解决方案:
Response.Redirect()
。就个人而言,我会使用第一种方法。
作为旁注,请更好地使用Response.SetCookie()
,因为Response.Cookie.Add()
可能会导致添加多个Cookie,而SetCookie
会更新现有的Cookie(如果存在)。