0

私がやろうとしているのは、基本的に、最後の既知のパラメーターを使用する Web ページに移動するように URL を設定することです。

  1. パラメータ show all を false に設定してページにアクセスしたため、リストに表示されていません。

  2. 次に、show all を true に変更します。したがって、すべてがリストに表示されます。

  3. 1 時間後、そのページに再度アクセスします。それはあなたが最後にすべてを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 種類のインデックス ページ変数の格納方法があります。

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()';">

編集:明らかに、ヘルパーを使用する前に UrlHelperExtensions クラスの名前空間をインポートする必要があります。

于 2012-06-15T09:38:19.613 に答える