C# 如何提取委托参数传递的参数
我尝试在MVC中构建一个助手。我尝试像这样传递参数:C# 如何提取委托参数传递的参数,c#,parameters,delegates,helpers,C#,Parameters,Delegates,Helpers,我尝试在MVC中构建一个助手。我尝试像这样传递参数: @Html.InputHandler(settings => { settings.Name = "Julio"; settings.Mask = "000-000-000"; settings.visible = false; settings.Label = true; settings.htmlAttributes = new { @class="form-control" } }) 我有
@Html.InputHandler(settings =>
{
settings.Name = "Julio";
settings.Mask = "000-000-000";
settings.visible = false;
settings.Label = true;
settings.htmlAttributes = new { @class="form-control" }
})
我有以下定义参数的代码
public delegate void Action<in T>(T obj);
public class InputSettings : SettingsBase
{
public string Name { get; set; }
public bool Label { get; set; }
public string Binding { get; set; }
public bool visible { get; set; }
public object htmlAttributes { get; set; }
public string Mask { get; set; }
}
public delegate void Action(T obj);
公共类输入设置:设置数据库
{
公共字符串名称{get;set;}
公共布尔标签{get;set;}
公共字符串绑定{get;set;}
公共布尔可见{get;set;}
公共对象htmlAttributes{get;set;}
公共字符串掩码{get;set;}
}
问题是我无法从帮助器中获取传递的值
public static MvcHtmlString InputHandler(this HtmlHelper htmlHelper, Action<InputSettings> method)
{
var parameters = method. ???
return new MvcHtmlString("");
}
public static MvcHtmlString-InputHandler(此htmlhelp-htmlhelp-Action方法)
{
var参数=方法???
返回新的MvcHtmlString(“”);
}
谢谢你 为了检索主体(因为在您尝试检索主体时,主体已经被编译并JIT’ed到一个完全不同的状态),您需要一个
表达式。但是,不能将lambda语句体转换为表达式树。因此,最好将强类型对象作为Func传递,然后立即返回结果
void Main()
{
InputHandler(() => new InputSettings {
Name = "Test1",
Mask = "test mask"
});
}
public static MvcHtmlString InputHandler(this HtmlHelper htmlHelper,
Func<InputSettings> method)
{
var parameters = method();
return new MvcHtmlString("");
}
void Main()
{
InputHandler(()=>新的InputSettings{
Name=“Test1”,
Mask=“测试掩码”
});
}
PUTHANDLER中的公共静态MvcHtmlString(此HtmlHelper HtmlHelper,
Func法)
{
var参数=方法();
返回新的MvcHtmlString(“”);
}