繁体   English   中英

我可以为HTML Helper调用具有多个参数的Lambda表达式吗?

[英]Can I call a Lambda Expression with multiple params for a Html Helper?

我可以在MVC 3中创建这样的代码行吗

<%=Html.CustomHtmlTag(r => r.Add("One"), r.Add("Two")...).Render()%>

我尝试查找并举例,但所有代码均用于(r => r.Add("One"))

非常感谢您的帮助。

您只需放置括号即可使用lambda编写完整的函数。

r =>
{
    r.Add("One");
    r.Add("Two");
}

如果您不满意,@ VoidStar提供的答案是正确的,这是更详细的示例。

MVC代码

@Html.CustomHtmlTag(Model, x => { 
                                    Model.Add("One"); 
                                    Model.Add("Two");
                                    Model.Add("Three");
                                    Model.Add("Four");
                                }).Render()

模型

public class MyModel
{
    private readonly IList<string> _values = new List<string>();

    public void Add(string value)
    {
        _values.Add(value);
    }

    public string ValuesToString()
    {
        return string.Join(",", _values);
    }
}

HTML助手

public static class MyMvcHelpers
{
    public static IMyClass CustomHtmlTag(this HtmlHelper helper, MyModel viewModel, Action<MyModel> action)
    {
        action.Invoke(viewModel);

        var expressionResult = viewModel.ValuesToString();

        return new MyClass(expressionResult);
    }
}

渲染类

public interface IMyClass
{
    MvcHtmlString Render();
}

public class MyClass : IMyClass
{
    private readonly string _value;

    public MyClass(string value)
    {
        _value = value;
    }

    public MvcHtmlString Render()
    {
        return new MvcHtmlString(string.Concat("<h1>", _value, "</h1>"));
    }
}

结果

<h1>One,Two,Thee,Four</h1>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM