如何用命名参数编写方法?

时间:2012-10-12 12:11:46

标签: c# asp.net-mvc

我有一个定义如下的方法。

public static MvcHtmlString DisplayReadOnlyGrid(
    this HtmlHelper htmlHelper,
    string containerId, 
    MvcHtmlString innerHtml)
{
    try
    {
        var outerDiv = new TagBuilder("DIV");
        outerDiv.AddCssClass("ML5 MT5 MR5");
        outerDiv.MergeAttribute("id", containerId);
        if (innerHtml != null && !innerHtml.Equals(string.Empty))
        {
            outerDiv.InnerHtml = innerHtml.ToString();
        }
        return MvcHtmlString.Create(outerDiv.ToString());
    }
    catch 
    {                
        throw;
    }
}

当我调用此方法时,我需要以下格式:

DisplayReadOnlyGrid(containerId="mycontainerid", innerHtml="innerhtml")

我该怎么做?

4 个答案:

答案 0 :(得分:3)

试试这个:

html.DisplayReadOnlyGrid(containerId: "mycontainerid", innerHtml: "innerhtml");

您可以按任意顺序传递参数,并且可以传递位置参数和命名参数,但是由于显而易见的原因,命名参数必须遵循位置参数。

MSDN:http://msdn.microsoft.com/en-us/library/dd264739.aspx

答案 1 :(得分:1)

由于C#4.0开箱即用,请参阅here。你无需做任何事情来启用它 但请注意,正确的语法使用冒号,而不是等号:

helper.DisplayReadOnlyGrid(containerId: "mycontainerid", innerHtml: "innerhtml");

如果您使用的是旧版本,则根本无法执行此操作。

答案 2 :(得分:0)

查看MSDN here

使用命名参数的格式如下:

helper.DisplayReadOnlyGrid(containerId: "mycontainerid", innerHtml: "innerhtml");

答案 3 :(得分:0)

方法说明

首先是extension method。参数中的关键字this值得注意。确切地说,它是HtmlHelper

上的扩展方法

其次参数:它们是Named parameters(C#4.0的功能),您可以调用该方法:

helper.DisplayReadOnlyGrid(containerId:"mycontainerid", innerHtml:"innerhtml")

命名参数允许您以任何顺序指定参数,并且对默认参数也有帮助,这也是C#4.0中的新功能