C# 如何限制此HTML助手方法的参数值?

C# 如何限制此HTML助手方法的参数值?,c#,.net,asp.net-mvc,facebook-like,html-helper,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.

我为类似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());
}
布局参数只有3个可能的值(标准、按钮计数和框计数)。我的问题是,我如何才能让这只接受这3个值


感谢您提供的帮助。

将其设置为
枚举

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
数据布局
是通过抓取传入的
enum
的名称来设置的。

+1足够简单,但枚举应该是单数:
LayoutType
并且它的成员应该是不带下划线的Pascal。不要唠叨。@Silvermind,不让它们使用Pascal大小写(因为我通常会这样做)的目的是非常直接地将所选的
枚举
值转换为
数据布局
的适当
字符串
值。就其单数而言,这很好,因为大多数
enum
都是单数,所以我对其进行了修改。