如何使用html助手创建MVC用户控件

本文关键字:MVC 用户 控件 创建 何使用 html | 更新日期: 2023-09-27 18:21:55

我有一个控件将被反复使用,所以我正在尝试为它创建一个用户控件。我在下面的文章中一直在关注,但他的解释中似乎缺少一些东西。我写了这样的静态类:

    public static class SingleSelectionControl
{
    public static MvcHtmlString SingleSelection(this HtmlHelper htmlHelper, string cssClass, string modelField) //case-field & caseName
    {
        StringBuilder builder = new StringBuilder();
        builder.Append("<div class='wizard-field'>");
        builder.Append("<textarea id='" + cssClass + "' class='wizard-textbox-field' ng-model='model." + modelField + "Value'></textarea>");
        builder.Append("<textarea id='" + cssClass + "-page' class='wizard-hidden' ng-model='model." + modelField + "Page'></textarea>");
        builder.Append("<ul class='wizard-horizontal-button-list'>");
        builder.Append("<li>");
        builder.Append("<input type='button' class='add button' onclick='getHighlightedText('#" + cssClass + "')' />");
        builder.Append("<input type='button' class='search button' onclick='setPage($('#" + cssClass + "-page').val()); setSearchText('#" + cssClass + "')' />");
        builder.Append("</li>");
        builder.Append("</ul>");
        builder.Append("</div>");
        return MvcHtmlString.Create(builder.ToString());
    }
}

我正试图使用以下代码从我的视图调用SingleSelection:

<div class="formA" id="_FormA">
    <div id="@Model.Order" style="display: none;">@Model.TemplateName</div>
    @using (Html.BeginForm())
    {
        <fieldset>
            <legend>Initial Filing</legend>
            <div class="wizard-label">
                <span>Case Name:</span>
            </div>
            @Html.SingleSelection("case-field", "caseName");

但是,正如我所料,@Html.SingleSelection未被识别。

这篇文章很相似,但也没有解释视图和静态方法是如何连接的。

如何"注册"这个方法,以便通过@Html从视图中调用它。?谢谢

如何使用html助手创建MVC用户控件

在视图中包含@using yourNamespace,或者最好将其添加到web.config文件中,以便在所有视图中都可用

<pages>
    <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        ....
        <add namespace="yourAssembly" />