2013-04-10 63 views
1

我做了一個像Facebook按鈕的HTML幫手。如何限制此HTML幫助程序方法的參數值?

public static MvcHtmlString FacebookLike(this HtmlHelper helper, bool send, bool showFaces, string layout, string href = null, int width = 450) 
{ 
    var div = new TagBuilder("div"); 
    div.AddCssClass("fb-like"); 
    div.MergeAttribute("data-send", send.ToString()); 
    div.MergeAttribute("data-width", width.ToString()); 
    div.MergeAttribute("data-show-faces", showFaces.ToString()); 
    div.MergeAttribute("data-layout", layout); 
    if (href != null) 
    { 
     div.MergeAttribute("data-href", href); 
    } 

    return new MvcHtmlString(div.ToString()); 
} 

佈局參數只有3個可能的值(標準,button_count和box_count)。我的問題是,我怎樣才能讓這隻接受這3個值?

感謝您提供任何幫助。

回答

3

使它成爲enum

public enum LayoutType 
{ 
    standard, 
    button_count, 
    box_count 
} 

,然後改變你的方法了一下:

public static MvcHtmlString FacebookLike(this HtmlHelper helper, bool send, bool showFaces, LayoutType layout, string href = null, int width = 450) 
{ 
    var div = new TagBuilder("div"); 
    div.AddCssClass("fb-like"); 
    div.MergeAttribute("data-send", send.ToString()); 
    div.MergeAttribute("data-width", width.ToString()); 
    div.MergeAttribute("data-show-faces", showFaces.ToString()); 
    div.MergeAttribute("data-layout", Enum.GetName(typeof(LayoutType), layout)); 
    if (href != null) 
    { 
     div.MergeAttribute("data-href", href); 
    } 

    return new MvcHtmlString(div.ToString()); 
} 

音符簽名現在使用enumdata-layout被抓住enum的名稱設置通過英寸

+1

+ 1很簡單,但枚舉應該是單數:'佈局類型',它的成員應該是帕斯卡沒有下劃線。不要嘮叨。 – Silvermind 2013-04-10 18:49:14

+0

@Silvermind,不讓它們成爲** Pascal的目的**(因爲我通常會這麼做)是讓它非常直接地將選定的'enum'值轉換爲'data-layout'的正確'string'值。就單數而言,沒關係,我修改了它,因爲大多數'enum'都是單數。 – 2013-04-10 18:53:08

相關問題