Как создать 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);
}