ASP.NET MVC3:将 cookie 传递给帮助程序方法
本文关键字:帮助程序 方法 cookie NET MVC3 ASP | 更新日期: 2023-09-27 18:37:22
我想做的基本上是设置URL以将您带到使用您最后已知参数的网页。
-
您访问的页面的参数显示全部设置为 false,因此它显示不在列表中。
-
然后,将"全部显示"更改为 true。所以它显示了所有列表。
-
一小时后,您重新访问该页面。它知道你上次把一切都展示成真的。
MR 控制器 - 索引:
HttpCookie mr1 = new HttpCookie("MR1", "test");
Request.Cookies.Add(mr1); // Save all parameters used in cookies. (WORKING).
使用按钮查看:
<input type="button" class="cancel" value="Cancel" onclick="location.href='@MyNS.Helpers.HtmlHelper.MRUrl(Request.Cookies)'">
MyNS.Helpers.HtmlHelper:
public static String MRUrl(COOKIES? myCookie)
{
//If not null, add to object array.
myCookie["MR1"].Value;
myCookie["MR2"].Value;
return @Url.Action("Index", "MR"); // Plus non null variables as parameters.
}
我不能做的是通过我的助手访问任何 Cookie。我也不知道这是否是最好的方法。我只想取出使用了参数的 cookie 信息,并使用它来构建所需的 URL。
将有 6-7 种不同的索引页变量存储方法。
我认为你想要一个像这样的UrlHelper扩展:
public static class UrlHelperExtensions
{
private static string GetCookieOrDefault(HttpRequestBase request, string name)
{
return request.Cookies[name] == null ? "" : request.Cookies[name].Value;
}
public static string MRUrl(this UrlHelper url)
{
var request = url.RequestContext.HttpContext.Request;
return url.Action("Index", "MR", new
{
mr1 = GetCookieOrDefault(request, "MR1"),
mr2 = GetCookieOrDefault(request, "MR2"),
mr3 = GetCookieOrDefault(request, "MR3")
});
}
}
然后,您可以在任何视图中使用它,如下所示:
<a href="@Url.MRUrl()">link text</a>
或者在你的按钮的情况下...
<input type="button" class="cancel" value="Cancel" onclick="location.href='@Url.MRUrl()';">
编辑:显然,在使用帮助程序之前,您需要导入UrlHelperExtensions类的命名空间。