Как создать Custom HTML Helper в Asp.Net MVC

Я новичок в MVC и пытаюсь написать пример вспомогательного HTML-кода, вот так вот мой вспомогательный HTML-код.

namespace MvcPractise.Extension
{
    public static class LabelHelper
    {
        public static string Label(this HtmlHelper helper, string target, string text)
        {
            return String.Format("<label for='{0}'>{1}</label>", target, text);

        }
    }
}

я использую это следующим образом, на мой взгляд, как

@using MvcPractise.Extension.LabelHelper
@model MvcPractise.Models.EmployeeModel

в верхней части представления я объявляю или ссылаюсь на пространство имен и имя класса, как указано выше

и использовать его как @Html.Label("firstName", "First Name:")

но когда я отлаживаю код, мой метод расширения не получает удар. Я мог понять, что я делаю что-то не так, но не мог понять. поэтому, пожалуйста, помогите. Спасибо

4 ответа

Решение

Если бы я был тобой, я бы не назвал его оригинальным именем из Html Helper. Я хотел бы попробовать что-то вроде:

public static string CustomLabel(this HtmlHelper helper, string target, string text)
{
   return String.Format("<label for='{0}'>{1}</label>", target, text);
}

После этого просто включите пространство имен (а не весь путь к классу) для примера:

@using MvcPractise.Extension

И как метод расширения, используйте его на Html имущество:

@Html.CustomLabel("firstName", "First Name:")

@Html.Label это встроенный помощник, вам нужно попробовать другое имя, например @Html.LabelEx

Переименуйте ваш метод расширения во что-то, чего нет в стандартной библиотеке! И это должно работать!

Попробуй это:

  public static string Label(string target, string text)
    {
        return String.Format("<label for='{0}'>{1}</label>", target, text);

    }

Попробуйте следующим образом это может быть из-за двусмысленности Labelи вы используете ярлык Html помощник а не custom помощник

@using MvcPractise.Extension

@LabelHelper.LabelCustom("firstName", "First Name:")

Ваш метод расширения:

    public static string LabelCustom(string target, string text)
    {
        return String.Format("<label for='{0}'>{1}</label>", target, text);

    }
Другие вопросы по тегам