如何在 MVC 中创建自定义 HTML 帮助程序 Asp.Net

本文关键字:HTML 帮助程序 Asp Net 自定义 创建 MVC | 更新日期: 2023-09-27 18:31:23

>我是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:")一样使用它

但是当我调试代码时,我的扩展方法没有被命中。 我可以理解我做错了什么,但无法弄清楚。 所以请帮忙。 谢谢

如何在 MVC 中创建自定义 HTML 帮助程序 Asp.Net

如果我是你,我不会将其命名为Html助手中的原始名称。我会尝试这样的事情:

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);
    }