سؤال

في وجهة نظر ASP.NET MVC أود أن تشمل وصلة من النموذج:

<a href="blah">Link text <span>with further descriptive text</span></a>

ومحاولة إدراج عنصر <span> في مجال linkText من دعوة إلى Html.ActionLink() ينتهي معها يتم ترميز (كما هو متوقع).

هل هناك أي وسائل الموصى بها من تحقيق ذلك؟

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

المحلول

هل يمكن استخدام Url.Action لبناء وصلة لك:

<a href="<% =Url.Action("Action", "Controller")%>">link text <span>with further blablah</span></a>

وأو استخدام Html.BuildUrlFromExpression:

<a href="<% =Html.BuildUrlFromExpression<Controller>(c => c.Action()) %>">text <span>text</span></a>

نصائح أخرى

وإذا أردت استخدام الشفرة، وهذا ينبغي العمل:

<a href="@Url.Action("Action", "Controller")">link text <span>with further blablah</span></a>

وثمة خيار آخر هو لتقديم وصلة العمل الخاصة بك إلى MvcHtmlString حسب طبيعتها، وذلك باستخدام إما HTML.ActionLink، أو Ajax.ActionLink (اعتمادا على السياق الخاص بك)، ثم كتابة فئة التي تأخذ MvcHtmlString المقدمة والخارقة نص الارتباط أتش تي أم أل مباشرة في المقدمة بالفعل MvcHtmlString، وإرجاع MvcHtmlString آخر.

وهكذا هذه هي الطبقة التي يفعل ذلك: [يرجى الإشارة إلى أن رمز الإدراج / استبدال بسيط جدا، والتي قد تحتاج إلى تعزيز ليصل إلى التعامل مع أتش تي أم أل أكثر متداخلة]

namespace Bonk.Framework
{
    public class CustomHTML
    {
        static public MvcHtmlString AddLinkText(MvcHtmlString htmlString, string linkText)
        {
            string raw = htmlString.ToString();

            string left = raw.Substring(0, raw.IndexOf(">") + 1);
            string right = raw.Substring(raw.LastIndexOf("<"));

            string composed = left + linkText + right;

            return new MvcHtmlString(composed);
        }
    }
}

وبعد ذلك استخدامه في عرض مثل هذا:

@Bonk.Framework.CustomHTML.AddLinkText(Ajax.ActionLink("text to be replaced", "DeleteNotificationCorporateRecipient"), @"Link text <span>with further descriptive text</span>")

وهذا النهج في الاستفادة من عدم وجود لإنتاج / فهم عملية تقديم العلامة.

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