如何提取通过委托参数传递的参数
本文关键字:参数传递 参数 何提取 提取 | 更新日期: 2023-09-27 17:51:08
我尝试在MVC中构建一个助手。我尝试像这样传递参数:
@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 static MvcHtmlString InputHandler(this HtmlHelper htmlHelper, Action<InputSettings> method)
{
var parameters = method. ???
return new MvcHtmlString("");
}
谢谢的!
为了检索body(因为当您尝试检索它时,它已经被编译并JIT到一个非常不同的状态),您将需要一个Expression<Action<T>>
。但是,不能将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("");
}