سؤال

ولقد واجهت مشكلة غريبة مع أسلوب ActionLink في ASP.NET MVC بيتا. عند استخدام الزائد امدا من العقود الآجلة MVC أنا لا يمكن أن يبدو لتحديد معلمة سحبت من ViewData.

وعندما حاول هذا:

<%= Html.ActionLink<PhotoController>(p => p.Upload(((string)ViewData["groupName"])), "upload new photo") %>

ووHTML يحتوي على ارتباط مع URL فارغة.

    <a href="">upload new photo</a>

ولكن إذا أنا بجد رمز المعلمة، مثل هذا:

<%= Html.ActionLink<PhotoController>(p => p.Upload("groupA"), "upload new photo") %>

والناتج يحتوي على URL الفعلي.

    <a href="/group/groupA/Photo/Upload">upload new photo</a>

وافترض أن هذا ربما لها علاقة مع وضوح الرؤية وتوافر ViewData، وأنه لم يكن هناك عندما يحصل على تقييم لامدا من قبل الداخلية للإطار. ولكن هذا مجرد تخمين.

وأفعل شيئا غير صحيح في العينة الأولى أن يسبب هذا، أم أن هذا بعض قصيرة من الأخطاء؟

على تحديث : لأنا باستخدام أحدث نسخة من العقود الآجلة MVC. وقد أشير إلى أن هذا يعمل لبعض الناس. وبما أنه لا يعمل بالنسبة لي هذا يجعلني أعتقد أنه شيء محدد لما أقوم به. هل لدى أي شخص أي اقتراح لماذا ننظر الى جيل، لأن هذا واحد حقا ولي الحيرة.

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

المحلول 2

وطيب، وأنا أحسب ما هي مشكلتي.

ويبدو أنني لم أكن حتى وضع فتحة ViewData التي كنت أحاول قراءة من في طريقة العرض، مما أدى إلى كونها قيمة فارغة.

وهكذا بشكل فعال كنت أكتب:

<%= Html.ActionLink<PhotoController>(p => p.Upload(null), "upload new photo") %>

وأعتقد أن كيكر النهائي لهذا الامر كله حقيقة أن المعلمة (اسم المجموعة) تمثل قيمة غير defaultable في بلدي جدول التوجيه.

routes.MapRoute(
    "Group",  
    "group/{groupname}/{controller}/{action}/{id}",
    new {controller = "Photos", action = "View", Id = ""});

وذلك وفقا لقاعدة التوجيه على اسم المجموعة الملكية يجب أن تكون موجودة، ولكن وفقا تذهب تم حذف هذا gropname لامبدا (خالية). وأدى ذلك في إطار MVC عدم تمكنه من العثور على الطريق الذي راض الاستعلام الخاص بي، والذي عاد للتو فارغة.

نصائح أخرى

هل تحديث الإصدار الخاص بك من Microsoft.Web.Mvc.dll حيث يوجد actionlink كتبته بقوة.

تم تحديثها ويبدو أن هذا دلل على إصدار بيتا. وظيفة قد تم تعديلها قليلا.

ولقد حاولت هذه

<%= Html.ActionLink<HomeController>(x=>x.Search((string)ViewData["search"]), "search?") %>

ووانها عملت بشكل جيد.

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