1

我为 facebook like 按钮制作了一个 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());
}

layout 参数只有 3 个可能的值(standard、button_count 和 box_count)。我的问题是我怎样才能让它只接受这 3 个值?

谢谢你提供的所有帮助。

4

1 回答 1

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());
}

请注意,签名现在使用 theenum并且data-layout通过获取enum传入的名称来设置。

于 2013-04-10T18:48:16.017 回答