سؤال

لقد بدأت للتو في استخدام asp.net mvc..نظرًا لأنني لست على دراية به، أريد فقط أن أطرح سؤالاً حول مساعد ActionLink html..

لدي هذا الرمز في عرض الصفحة الرئيسية الخاص بـ Index.aspx..

    <%  Dim _news As datatable = ViewData.Model%>
    <%  For count As Integer = 0 To _news.Rows.Count - 1%>
    <%  Dim id As Integer = _news.Rows(count).Item("IDnews")%>
    <%=_news.Rows(count).Item("newsTitle")%>
    <p>
    <%=_news.Rows(count).Item("newsContent")%><br />
    <%=Html.ActionLink("Read More..", "NewsPublic", "Administration", New With {id})%>
    </p>
    <%Next%>

إذا قمت بالنقر فوق رابط الإجراء، كنت أتوقع أنه سيوجهني إلى عنوان URL هذا:/الإدارة/الصحف/7 ولكنه يعطيني عنوان URL هذا:/الرئيسية/الأخبار العامة?الطول=14

هل يقوم actionlink بتمرير معرف في نفس وحدة التحكم فقط؟

شكرا لكم مقدما!

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

المحلول

وافتراضيا، سوف Html.ActionLink استخدام وحدة تحكم الحالي. ولكن هناك نحو عشرة الزائدة من ActionLink ()، وهناك عدة إصدارات من أن يقبل معلمة وحدة تحكم. جرب:

Html.ActionLink("Read More...", 
                 "NewsPublic", 
                 "Administration",
                 New With { .id = id },
                 null)

نصائح أخرى

لتقديم الرابط إلى /الإدارة/نيوزبوبليك/7 يجب عليك استخدام

<%=Html.ActionLink("Read More..", "NewsPublic", "Administration", 
    New With {.id = 7}, Nothing)%>

المعلمة الخامسة تجعل المترجم يختار

ActionLink(string linkText, string actionName, string controllerName, 
    object routeValues, object htmlAttributes)

طريقة التمديد الزائد بدلا من

ActionLink(string linkText, string actionName, object routeValues, 
    object htmlAttributes)

ولا تنس إضافة تعيين المعلمة

New With {.id = 7}

بدلاً من

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