2014-12-30 33 views
3

從這裏相同的問題。TagBuilder添加屬性沒有值

How to add attribute without value

這一次,我想創建一個輸入與AngularJS屬性,把它當作一個指令。

下面是我想:

<input ng-angular-abc /> 

這是TagBuilder生成的內容:

<input ng-angular-abc=""/> 

我已經試過了,但沒有工作:

tagBuilder.MergeAttribute("ng-angular-abc", ""); 
tagBuilder.MergeAttribute("ng-angular-abc", null); 
tagBuilder.MergeAttribute("ng-angular-abc", "ng-angular-abc"); 
+1

'ng-angular-abc =「」''和'ng-angular-abc'是相同的。使用空值時,Anuglar沒有任何問題。我使用角度一段時間,並沒有經歷任何的差異。 –

+0

在我的指令中,我檢查attrs並查看是否定義了值。使用ng-angular-abc時,該值未定義,使用ng-angular-abc =「」時,該值爲空,並且工作錯誤。 –

+0

這似乎是問題與您的指示...我會修正,而不是試圖改變MVC(這是因爲所有這些東西都是等價的)。如果你真的確定了,你可以從TagBuilder繼承並覆蓋'MergeAttribute'。 – Casey

回答

1

這不是正是你需要的,但你可以創建一個幫助方法來生成標籤 -

namespace YourNamespace 
{ 
    public static class CustomHelpers 
    { 
     public static MvcHtmlString TextboxWithProperty(this HtmlHelper html, string property) 
     { 
      StringBuilder result = new StringBuilder(); 
      result.AppendFormat("<input {0} />", property); 
      return MvcHtmlString.Create(result.ToString()); 
     } 
    } 
} 

,並調用它在您的視圖 -

@using YourNamespace 
... 
... 
... 
@Html.TextboxWithProperty("ng-angular-abc") 
+0

不完全是我想要的,創造一個幫手我自己是太多的工作。我只想重新使用或配置現有的Tag Builder。 –

+0

'HtmlTextWriter'似乎也沒有這個選項。 – th1rdey3

1

另一種方法是使用剃刀傭工創造你Helpers.cshtml文件App_Code目錄。你的助手想這

@helper InputNg() { 
    <input ng-angular-abc /> 
} 

要訪問剃刀視圖助手簡單地使用了文件名由該方法如下所示:

@Helpers.InputNg() 

它可以讓你在你的HTML更好的控制。

相關問題