0

我要做的基本上是设置 URL 以将您带到使用您最后已知参数的网页。

  1. 您访问参数显示全部设置为 false 的页面,因此它显示非列表。

  2. 然后,您将全部显示更改为 true。所以它显示在列表中。

  3. 一小时后,您重新访问该页面。它知道你最后一次证明一切都是真的。:

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 种不同的索引页变量存储方法。

4

1 回答 1

2

我认为您想要这样的 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()';">

Edit: You'd need to import the namespace of the UrlHelperExtensions class before using the helper, obviously.

于 2012-06-15T09:38:19.613 回答