سؤال

أواجه مشكلات في إنشاء ActionLink باستخدام Preview 5.تصف جميع المستندات التي يمكنني العثور عليها الإصدار العام الأقدم.

أقوم بإنشاء روابط في قائمة الوظائف على الصفحة /jobs.تحتوي كل وظيفة على دليل، وأرغب في إنشاء رابط إلى /jobs/details/{guid} حتى أتمكن من عرض تفاصيل حول الوظيفة.تحتوي وحدة التحكم في الوظائف على وحدة تحكم الفهرس ووحدة تحكم التفاصيل.تأخذ وحدة التحكم في التفاصيل دليلاً.لقد حاولت هذا

<%= Html.ActionLink(job.Name, "Details", job.JobId); %>

ومع ذلك، فإن هذا يعطيني عنوان URL "/jobs/details".ما الذي أفتقده هنا؟


حلها، بمساعدتكم.

المسار (تمت إضافته قبل مسار استقبال الرسائل الخاطئة):

routes.Add(new Route("Jobs/Details/{id}", new MvcRouteHandler())
{
Defaults = new RouteValueDictionary(new
    {
    controller = "Jobs",
    action = "Details",
    id = new Guid()
    }
});

رابط الإجراء:

<%= Html.ActionLink(job.Name, "Details", new { id = job.JobId }) %>

النتائج في مرساة HTML:

http://localhost:3570/WebsiteAdministration/Details?id=2db8cee5-3c56-4861-aae9-a34546ee2113

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

ملاحظة جانبية، الروابط الخاصة بي لم تكن تظهر، والمراقبة السريعة لا تعمل (لا يمكن مراقبة تعبير بنوع مجهول)، مما جعل من الصعب للغاية معرفة ما يحدث هنا.اتضح أن روابط الإجراء لم تظهر بسبب خطأ مطبعي بسيط جدًا:

<% Html.ActionLink(job.Name, "Details", new { id = job.JobId })%>

هذا سوف يحصل لي مرة أخرى.

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

المحلول

أعط هذه لقطة:

<%= Html.ActionLink(job.Name, "Details", new { guid = job.JobId}); %>

حيث "guid" هو الاسم الفعلي للمعلمة في مسارك.يقوم هذا بإرشاد محرك التوجيه الذي تريد وضع قيمة الخاصية job.JobId في معلمة الدليل الإرشادية لتعريف المسار.

نصائح أخرى

هل قمت بتحديد مسار للتعامل مع هذا في ملف Global.asax.cs الخاص بك؟المسار الافتراضي هو {controller}/{action}/{id}.أنت تقوم بتمرير "JobID"، والذي لن يقوم إطار العمل بتعيينه إلى "id" تلقائيًا.تحتاج إما إلى تغيير هذا ليكون job.id أو تحديد مسار للتعامل مع هذه الحالة بشكل صريح.

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