如何限制此HTML帮助程序方法的参数值?

时间:2013-04-10 18:43:23

标签: c# .net asp.net-mvc facebook-like html-helper

我为facebook喜欢按钮做了一个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个值?

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分: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());
}

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