【问题标题】:Can I call a Lambda Expression with multiple params for a Html Helper?我可以为 Html Helper 调用具有多个参数的 Lambda 表达式吗?
【发布时间】:2012-08-17 23:35:41
【问题描述】:

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

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

我尝试查找示例,但所有代码都是针对(r =&gt; r.Add("One"))

非常感谢您的帮助。

【问题讨论】:

    标签: c# asp.net asp.net-mvc-3 lambda html-helper


    【解决方案1】:

    你可以用 lambdas 编写完整的函数,只需加上大括号。

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

    【讨论】:

      【解决方案2】:

      @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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-21
        • 1970-01-01
        • 1970-01-01
        • 2011-08-04
        • 1970-01-01
        • 2012-06-28
        • 1970-01-01
        相关资源
        最近更新 更多