لماذا يقوم Routelink بإنشاء عنوان URL ودية أثناء ActionLink لا؟

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

سؤال

لدي سؤال بشأن Routelink مقابل ActionLink.

النظر في الطريق التالي

routes.MapRoute("Routename1",
    "{someEnum}/SpecificAction/{id}/{stringId}",
    new { controller = "MyController", id = (int?)null, stringId= (string)null, action = "SpecificAction" },
    new { someEnum= "(EnumVal1|EnumVal2)" }
);

الجزء الغريب {sometyum} هو لأنني أستخدم وحدة تحكم عامة لجميع قيم العادة التي تشكل جزء التحكم النموذجي من عنوان URL. على سبيل المثال، / enumval1 / action / and enumval2 / action / استخدام نفس وحدة التحكم. هذا ليس جزءا من المشكلة، ولكن.

النظر في الاتجاهين التاليين للربط:

<%=Html.RouteLink("Click me","Routename1", new { id = 32, stringId = "Yatzy" })%> 
<%=Html.ActionLink("Click me", "SpecificAction", "EnumVal1", new { id = 32, stringId = "Yatsy" }, null)%>

يولد Routelink عنوان URL الصحيح، والذي سيكون / Enumval1 / 32 / Yatzy

يقوم ActionLink بإنشاء عنوان URL يشبه / enumval1 / setion / 32؟ str string = yatzy

لماذا هذا؟ يمكن للشخص أن يفسر هذا بالنسبة لي، من فضلك.

هل كانت مفيدة؟

المحلول

RouteLink يمكن فقط استخدام مسار واحد تحدده. ActionLink سوف تستخدم الطريق المطابق الأول، سواء كان الشخص الذي تقصده أم لا. ربما تكون الأمثلة الخاصة بك مطابقة طرق مختلفة.

Phil Haack Routing Debugger سوف تساعد في توضيح هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top