public Jquery Extra(this HtmlHelper htmlhelper,
string message,
IDictionary<string, object> htmlAttributes)
如果我声明这个Htmlhelper htmlhelper当我声明我的方法,但我不想在我调用该方法时传递该参数?声明参数,我不想通过
我是决策意识
public Jquery Extra(this HtmlHelper htmlhelper,
string message,
IDictionary<string, object> htmlAttributes)
如果我声明这个Htmlhelper htmlhelper当我声明我的方法,但我不想在我调用该方法时传递该参数?声明参数,我不想通过
我是决策意识
我相信你正在试着编写一个Extension Method。你定义它像这样
namespace ExtensionMethods
{
public static class MyExtensions
{
public static Jquery Extra(this HtmlHelper htmlhelper, string message, IDictionary htmlAttributes)
{
//do work
return Jquery;
}
}
}
,然后用它是这样的:
HtmlHelper helper = new HtmlHelper();
Jquery jq = helper.Extra(message, htmlAttributes);
我想你已经明白了。 – SLaks 2010-07-14 13:31:02
这不会工作HtmlHelper helper = new HtmlHelper(); 因为HtmlHelper没有构造函数。 – 2010-07-14 13:32:36
Brian的代码仅仅是一个例子,用于证明您需要一个HtmlHelper变量来调用您的Extra扩展方法。重点在于语法必须是这样的:'<你的HtmlHelper实例> .Extra(message,htmlAttributes);'你可能会在视图中调用这个方法,在这种情况下,你已经可以访问HtmlHelper实例(视图的Html属性),并且不需要创建它的新实例。你应该可以像'<%= Html.Extra(message,htmlAttributes)%>'或'<%JQuery jq = Html.Extra(message,htmlAttributes); %>' – 2010-07-14 14:28:24
编辑:这听起来像你希望能够在所有调用这个方法没有任何HtmlHelper
对象。
如果方法需要HtmlHelper
,您将无法在没有该方法的情况下调用它。
您应该重写该方法,以便它不需要HtmlHelper
。
你可以用较少的参数过载:
public static Jquery Extra(this HtmlHelper htmlhelper, string message) {
return htmlHelper.Extra(message, null);
}
在C#4,你也可以使用一个可选的参数:
public Jquery Extra(this HtmlHelper htmlhelper, string message, IDictionary<string, object> htmlAttributes = null) {
我强烈建议您还增加了一个需要匿名类型的过载:
public static Jquery Extra(this HtmlHelper htmlhelper, string message, object htmlAttributes) {
return htmlHelper.Extra(message, null, new RouteValueDictionary(htmlAttributes));
}
但是我需要在我的方法中使用html助手,并且我不能创建它的新实例 – 2010-07-14 13:17:56
咦?你什么意思? – SLaks 2010-07-14 13:18:44
我需要调用我的Extra方法而不传递第一个参数。但我不想通过htmlhelper而不是htmlattribuites。 所以,如果我创建一个超载我不会能够使用htmlhelper变量,我想分配一个值。 – 2010-07-14 13:23:33
谁是这个函数的作者?如果是你,那么不包含第一个参数。 public Jquery Extra(string message, IDictionary<string, object> htmlAttributes)
。
如果它是你自己没有编写的代码,那么HtmlHelper
变量可能是必要的,你应该不要试图从函数原型中删除它。
您的评论之一表示您无法初始化HtmlHelper,这在技术上并非如此。请参阅[msdn参考]。 1
这是我的代码....我需要包括我需要在我的方法中使用它的HTML帮助.. 嗯,我的意思是你不能创建一个实例,他写它的方式。 – 2010-07-14 14:43:25
您是否知道扩展方法和'this'-keyword?这很难理解你实际上想要做什么 – sloth 2010-07-14 13:50:58