0

MVC 3 でこのようなコード行を作成できますか?

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

私は見つけて例を挙げようとしましたが、すべてのコードは(r => r.Add("One"))

助けてくれてありがとう。

4

2 に答える 2

4

中かっこを付けるだけで、ラムダを使用して完全な関数を記述できます。

r =>
{
    r.Add("One");
    r.Add("Two");
}
于 2012-08-18T00:29:57.683 に答える
1

@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>
于 2012-08-18T01:18:01.577 に答える