Asp.Net MVC:كيف يمكنني الحصول على Html.ActionLink لعرض القيم الصحيحة بشكل صحيح؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

لدي تطبيق asp.net mvc بمسار مشابه لـ:

routes.MapRoute("Blog", 
    "{controller}/{action}/{year}/{month}/{day}/{friendlyName}",                          
    new { controller = "Blog", action = "Index", id = "", friendlyName="" }, 
    new { controller = @"[^\.]*", 
          year = @"\d{4}", 
          month = @"\d{2}", 
          day = @"\d{2}" }
);

يبدو توقيع طريقة عمل وحدة التحكم الخاصة بي كما يلي:

public ActionResult Detail(int year, int month, int day, string friendlyName)
{ // Implementation... }

من وجهة نظري، أفعل شيئًا مثل:

<%= Html.ActionLink<BlogController>(item => item.Detail(blog.PostedOn.Year, blog.PostedOn.Month, blog.PostedOn.Day, blog.Slug), blog.Title) %>

أثناء عمل عنوان URL الذي تم إنشاؤه باستخدام ActionLink، فإنه يستخدم متغيرات سلسلة الاستعلام بدلاً من إعادة كتابة عنوان URL.

على سبيل المثال، ستنتج /blog/detail/my-slug?year=2008&month=7&day=5 بدلاً من /blog/detail/2008/07/05/my-slug

هل هناك طريقة للحصول على الإصدار العام من ActionLink لحشو القيم الصحيحة بشكل صحيح بحيث يظهر عنوان url كما هو متوقع؟

شكرًا

جيم

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

المحلول

أود أن أقترح تنسيق السنة والشهر واليوم كسلاسل بدلاً من ذلك.التفكير في هذا:هل ستقوم بأي عمليات حسابية على هذه "الأعداد الصحيحة"؟ربما لا، لذلك لا فائدة من جعلها أعدادًا صحيحة.بمجرد حصولك عليها كسلاسل يمكنك فرض التنسيق الصفري البادئ.

نصائح أخرى

حقيقة أن المعلمات الخاصة بك هي أعداد صحيحة لا علاقة لها بمشكلتك.تعريف المسار الذي تريد استخدامه لا يتم استخدامه فعليًا، ولهذا السبب يستخدم عنوان URL الذي تم إنشاؤه معلمات سلسلة الاستعلام بدلاً من إنشاء البنية التي تريدها.

يتم تقييم المسارات من أعلى إلى أسفل، لذلك من المحتمل أن يكون لديك تعريف مسار أكثر عمومية يلبي إنشاء عنوان URL المطلوب.حاول نقل المسار الذي عرضته في هذا المنشور إلى أعلى تعريفات المسار، وسترى أن الرابط الذي تم إنشاؤه هو كما تتوقع.ثم فكر في تعديل تعريفات المسار الخاص بك إما لتكون أكثر تحديدًا، أو فقط قم بتحريكها حسب الضرورة.

يمكن أن يكون تصحيح هذه الأنواع من السيناريوهات بمثابة ألم كبير.أقترح تنزيل Phil Haack مصحح أخطاء الطريق, ، سيجعل حياتك أسهل كثيرًا.

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