asp.net mvc - مواقع - هل هناك طريقة لتضمين معرف هوية جزء عند استخدام ASP.Net مفك أكتيونلينك، ريديركتوتواكتيون، وما إلى ذلك؟




مواقع asp net (5)

Dominic،

أنا تقريبا إيجابية أن وضع ذلك في الطريق سوف يسبب مشاكل التوجيه.

Ricky،

حتى مفك لديه دعم لهذا، يمكنك أن تكون أكثر قليلا "المدرسة القديمة" حول كيفية جعل الطرق الخاصة بك. على سبيل المثال، يمكنك تحويل:

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

إلى:

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

أو يمكنك كتابة المساعد الخاص بك الذي يفعل أساسا نفس الشيء.

أريد أن تتضمن بعض الروابط معرفا للجزء. مثل بعض عناوين ورل على هذا الموقع:

تصحيح الأخطاء: IE6 + سل + أجاكس + بوست فورم = 404 إرور # 5626

هل هناك طريقة للقيام بذلك مع أي من الطرق المضمنة في مفك؟ أو هل يجب أن أتقدم بمساعدي هتمل الخاصين بي؟


نحن نتطلع إلى تضمين الدعم لهذا في إصدارنا التالي.


هذا هو الحل جانب العميل ولكن إذا كان لديك مسج المتاحة يمكنك أن تفعل شيئا من هذا القبيل.

<script language="javascript" type="text/javascript">
    $(function () {
        $('div.imageHolder > a').each(function () {
            $(this).attr('href', $(this).attr('href') + '#tab-works');
        });
    });
</script>


كما كتب براد ويلسون، يمكنك بناء الرابط الخاص بك في وجهات نظركم ببساطة عن طريق تسلسل السلاسل. ولكن لإلحاق اسم جزء إلى إعادة توجيه تم إنشاؤها عبر ريديركتوتواكتيون (أو ما شابه ذلك) ستحتاج إلى شيء من هذا القبيل:

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

يجب أن يؤدي ذلك إلى إنشاء عنوان ورل بشكل صحيح.





asp.net-mvc