Pertanyaan MVC3 cara menggunakan @ sebagai parameter html helper


Saya sedikit bingung dengan penciptaan Pembantu MVC3. Saya memiliki pembantu saya yang hanya membuat baris dengan ekspresi yang dilewatkan sebagai parameter.

Saya ingin menggunakan htmlHelper saya seperti ini:

@Html.AddTableFormField(model => model.UserName, @<text>
        @Html.EditorFor(m => m.UserName)<span class="warning">Use only letters</span>
    </text>)

Ini adalah HtmlHelper saya (beberapa kode yang tidak relevan telah dihapus):

public static MvcHtmlString AddTableFormField<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> property, Expression<Func<TModel>> customFormat = null)
    {
        var metadata = ModelMetadata.FromLambdaExpression(property, htmlHelper.ViewData);

        string displayName = metadata.DisplayName;

        var propName = metadata.PropertyName;

        if (string.IsNullOrWhiteSpace(displayName))
            displayName = propName;

        MvcHtmlString htmlCustomFormat = null;

        if (customFormat != null)
        {
            var deleg = customFormat.Compile();
            htmlCustomFormat = new MvcHtmlString(deleg().ToString());
        }
        else
            htmlCustomFormat = htmlHelper.EditorFor(property);

        return new MvcHtmlString(string.Format("<tr>"+
                "<td class=\"form-label\">"+
                    "<label class=\"editor-label\" for=\"{0}\">{1}<label>"+
                "</td>"+
                "<td class=\"form-data\">"+
                    "{2}"+
                "</td>"+
            "</tr>",
            propName, displayName, htmlCustomFormat));
    }

Saya bahkan tidak dapat mengkompilasinya, karena @<text>...</text> parameter tidak valid untuk HtmlHelper karena ini adalah 'lambda expression' dan tidak dapat diubah menjadi Expression>

Adakah yang bisa membantu menyelesaikannya? Saya hanya ingin melewati segala jenis @<text></text> ke HtmlHelper saya, dan itu hanya kompilasi dan letakkan itu MvcHtmlString ke dalam pengembalian formated.

LARUTAN:

Saya menemukan apa yang saya cari dalam posting ini: ASP.Net MVC3 - Berikan marka pisau cukur sebagai parameter

Tipe parameter untuk @<text></text> harus menjadi Func<object, HtmlHelper> !


5
2017-08-26 20:38


asal


Jawaban:


Saya menemukan apa yang saya cari dalam posting ini: ASP.Net MVC3 - Berikan marka pisau cukur sebagai parameter

Tipe parameter untuk @<text></text> harus menjadi Func<object, HelperResult> !


4
2017-08-26 23:26



Itu <text>...</text> or @: adalah sintaks Razor (bukan C #) untuk menghindari elemen html, jadi usgesti saya adalah Anda menggunakan string sebagai parameter, bukan @<text>


2
2017-08-26 20:54