2015-10-19 64 views
-2

當我使用沒有擴展方法屬性如何解決它

protected void GenGridView() 
 
    { 
 
     var data = project.ObtainDataDescJSON(); 
 
     Title = "show"; 
 
     for (int rowCtr = 0; row < data.Num.Count; row++) 
 
     { 
 
      var buttonField = new ButtonField 
 
      { 
 
       ButtonType = ButtonType.Button, 
 
       Text = "Show", 
 
       CommandName = "Display" 
 

 
      }; 
 

 
      buttonField.Attributes.Add("data-toggle", "modal"); 
 
      buttonField.Attributes.Add("data-target", "#myModal"); 
 
      buttonField.CssClass = "btn btn-info";    
 

 
      ModelNumFieldsGrid.Columns.Add(buttonField); 
 
      break; 
 
     } 
 
     }

在C#中定義按鈕我有錯誤說沒有擴展屬性和沒有擴展名的CssClass。

我試圖

[AttributeUsageAttribute(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)] 
public sealed class ExtensionAttribute : Attribute 

using System.Runtime.CompilerServices.ExtensionAttribute; 

,但不起作用。我該如何解決呢

我確切的錯誤,

Error \t 2 \t 'System.Web.UI.WebControls.ButtonField' does not contain a definition for 'Attributes' and no extension method 'Attributes' accepting a first argument of type 'System.Web.UI.WebControls.ButtonField' could be found (are you missing a using directive or an assembly reference?) \t C:\Users\s0\Documents\Visual Studio 2013\WebSites\Model.aspx.cs \t 55 \t 25 \t Pred 
 

 
Error \t 7 \t 'System.Web.UI.WebControls.ButtonField' does not contain a definition for 'CssClass' and no extension method 'CssClass' accepting a first argument of type 'System.Web.UI.WebControls.ButtonField' could be found (are you missing a using directive or an assembly reference?) \t C:\Users\s06\Documents\Visual Studio 2013\WebSites\Model.aspx.cs \t 74 \t 25 \t Pred
在C#

+2

你能告訴我們'buttonField'的定義嗎? –

+0

酷!讓我更新我的帖子 –

+0

實際的錯誤信息也會有所幫助 - 我敢肯定這不是「沒有擴展屬性,也沒有擴展cssClass」 –

回答

0

擴展方法允許你聲明,你可以調用彷彿他們是一個類的方法方法:

public class Button { } 

public static class ButtonExtensions 
{ 
    public static int GetArea(this Button button) 
    { 
     return button.Width * button.Height; 
    } 
} 

使用此擴展方法,您可以撥打:

Button b = new Button(); 
int area = b.GetArea(); 

當您刪除的擴展方法,你會得到錯誤信息

「按鈕」不包含GetArea的定義,並沒有擴展方法GetArea接受Button類型的第一個參數可以發現

現在有可能永遠是一個擴展方法AttributesCssClass但編譯器猜測它曾經在那裏,可能因爲大多數程序員甚至在智能感知沒有在成員名稱上拾取時甚至不會嘗試編譯。

總之:編譯器告訴你,ButtonField沒有這些成員。

+0

因此,使用擴展方法屬性的唯一方法是自己編寫Attribute方法?其實這個問題是基於我的另一個問題。你可以看看嗎? http://stackoverflow.com/questions/33217284/use-the-button-defined-behind-in-c-sharp-in-front-bootstrap-modal –

+0

這是否意味着解決方案是錯誤的? –

+0

錯誤很簡單 - 你正試圖訪問不存在的屬性。但是現在,您正在將「擴展」和「屬性」這樣的術語放在一起,就像您試圖做一些非常複雜的事情一樣。說實話,我不知道你想達到什麼目的。 –

0

事實上System.Web.UI.WebControls.ButtonField不含有一種叫CssClass屬性,你可以通過設置類:

buttonField.ControlStyle.CssClass 

此外,如果你需要添加自定義屬性到你需要的ButtonField字段在網格的RowDataBound事件中這樣做。