があるので、を含むフラグメント識別子利用の場合Asp.Net MVC ActionLink,RedirectToActionうにはどうすればよいのですか。

StackOverflow https://stackoverflow.com/questions/5628

  •  08-06-2019
  •  | 
  •  

質問

たいへのリンクを含むフラグメント識別子です。のエリアを表示一部のエリアのUrlをこのサイト:

デバッグ:IE6+SSL+AJAX+ポストフォーム=404エラー#5626

があるので、この内蔵方法MVC?したことがうれしいロールを自分のHTMLヘルパー?

役に立ちましたか?

解決

私たちは時の支援などのために当社が次のリリースで実現されます。

他のヒント

としてブラッド-ウィルソンの書きめのリンクをお考えるだけでは列の文字列です。が追加フラグメント名にリダイレクトで発生しているRedirectToAction(またはそれに類似するもの)だようこ:

public class RedirectToRouteResultEx : RedirectToRouteResult {

    public RedirectToRouteResultEx(RouteValueDictionary values)
        : base(values) {
    }

    public RedirectToRouteResultEx(string routeName, RouteValueDictionary values)
        : base(routeName, values) {
    }

    public override void ExecuteResult(ControllerContext context) {
        var destination = new StringBuilder();

        var helper = new UrlHelper(context.RequestContext);
        destination.Append(helper.RouteUrl(RouteName, RouteValues));

        //Add href fragment if set
        if (!string.IsNullOrEmpty(Fragment)) {
            destination.AppendFormat("#{0}", Fragment);
        }

        context.HttpContext.Response.Redirect(destination.ToString(), false);
    }

    public string Fragment { get; set; }
}

public static class RedirectToRouteResultExtensions {
    public static RedirectToRouteResultEx AddFragment(this RedirectToRouteResult result, string fragment) {
        return new RedirectToRouteResultEx(result.RouteName, result.RouteValues) {
            Fragment = fragment
        };
    }
}

そして、コントローラのた電話:

return RedirectToAction("MyAction", "MyController")
       .AddFragment("fragment-name");

そのURLを修正。

にMVC3それ以前のまだ確認できます。UrlHelper.GenerateUrl通の断片をパラメータとします。こちらのヘルパーの方法を使っているラップのfunctionalityL

public static string Action(this UrlHelper url, string actionName, string controllerName, string fragment, object routeValues)
{
    return UrlHelper.GenerateUrl(
        routeName: null,
        actionName: actionName,
        controllerName: controllerName,
        routeValues: new System.Web.Routing.RouteValueDictionary(routeValues),
        fragment: fragment,
        protocol: null,
        hostName: null,
        routeCollection: url.RouteCollection,
        requestContext: url.RequestContext,
        includeImplicitMvcValues: true /*helps fill in the nulls above*/
    );
}

@ドミニ,

私はほぼ正のように経路がルーティング課題です。

@Ricky,

まMVCは支援のための本ですのでもう少し"の小学校"うだ。例えば、変換:

<%= Html.ActionLink("Home", "Index") %>

<a href='<%= Url.Action("Index") %>#2345'>Home</a>

やで記入することができるヘルパーは基本的に同じものだと言ってもいいです。

その答えは:No.にASP.NET MVCプレビュー3が初のクラスの方法などのアンカーアクションです。と異なりレール'url_for:アンカー UrlHelper.GenerateUrl(ActionLink,RedirectToActionで使用しない魔法のプロパティ名をまとめて見ることができるエンコードさせる仕組みであった。

ご指摘のとおり、ロール自る。これはおそらく、最もクリーンな溶液とする。

Hackilyすことができるのかなどのアンカーのルートを指定した値にパラメータのハッシュ:

routes.MapRoute("WithTarget", "{controller}/{action}/{id}#{target}");
...
<%= Html.ActionLink("Home", "Index", new { target = "foo" })%>

これを生成するURLのように/Home/Index/#foo.残念ながらこんなくなってしまったことは、我々のURLパラメータに表示される末ます。このhackは可能な、本当に簡単な場合ですべてのパラメータとして登場しURLパス。

これはクライアント側の溶液またjqueryご利用いただけますように。

<script language="javascript" type="text/javascript">
    $(function () {
        $('div.imageHolder > a').each(function () {
            $(this).attr('href', $(this).attr('href') + '#tab-works');
        });
    });
</script>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top