2015-11-13 54 views
0

我有一個反覆使用的控件,所以我試圖爲它創建一個用戶控件。我一直在關注以下article,但他的解釋似乎沒有什麼東西。我寫的靜態類是這樣的:如何使用html helper創建MVC用戶控件

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無法識別。

This post是相似的,但也沒有解釋如何連接視圖和靜態方法。

如何「註冊」此方法,以便我可以通過@Html從我的視圖中調用它。謝謝!

+1

添加到web.config文件,因此它的可用你是否包含'@ using'視圖中的聲明?或者更好的做法是,將命名空間添加到'web.config'文件 –

+0

對命名空間的使用聲明是我不知道的缺失部分。我添加了它,除了一個語法錯誤,它完美的工作。請添加您的評論作爲答案。 – BrianLegg

+0

也看到http://stackoverflow.com/a/11897078/2562358 –

回答

1

無論在視圖中包括一個@using yourNamespace,或者更好的是在所有視圖

<pages> 
    <namespaces> 
     <add namespace="System.Web.Helpers" /> 
     <add namespace="System.Web.Mvc" /> 
     .... 
     <add namespace="yourAssembly" /> 
相關問題