Вложение нескольких меток и входных данных в тег формы с помощью HtmlHelper в ASP.NET MVC 3 - PullRequest
3 голосов
/ 01 февраля 2012

Как мне вложить несколько меток и входных данных в тег формы с помощью HtmlHelper в ASP.NET MVC3?

Мой код указан ниже:

public static string GenerateFormForContact(this HtmlHelper helper, string method, string action, bool includeMailTag)
{
    //form tag
    TagBuilder form = new TagBuilder("form");
    form.Attributes.Add("action", action);
    form.Attributes.Add("method", method);

    //label and input tag

    TagBuilder labelClientName = new TagBuilder("label");
    labelClientName.Attributes.Add("for", "clientName");
    TagBuilder inputClientName = new TagBuilder("input");
    inputClientName.Attributes.Add("name", "clientName");
    inputClientName.Attributes.Add("type", "text");
    inputClientName.Attributes.Add("placeholder", "Your name");
    inputClientName.Attributes.Add("required", "required");

    //how to insert inside form

    TagBuilder labelEmailName = new TagBuilder("label");
    labelEmailName.Attributes.Add("for", "emailName");
    TagBuilder inputEmailName = new TagBuilder("input");
    inputEmailName.Attributes.Add("name", "emailName");
    inputEmailName.Attributes.Add("type", "email");
    inputEmailName.Attributes.Add("placeholder", "Your mail");
    inputEmailName.Attributes.Add("required", "required");

    //how to insert again inside form the second label and input

    //how to insert again inside form the n-th label and input 
    return form.ToString(TagRenderMode.Normal);
}

Ответы [ 2 ]

13 голосов
/ 01 февраля 2012

Если вы хотите заключить labelEmailName, inputEmailName и другие элементы (TagBuilder) в уже созданную форму или любую другую TagBuilder, используйте TagBuilder.InnerHtml Вот так:

form.InnerHtml += labelEmailName.ToString();
form.InnerHtml += inputEmailName.ToString();
4 голосов
/ 01 февраля 2012

Это не ответ, а предложение.Есть ли какая-либо причина, чтобы не использовать Razor или Partial для этого?

Я написал это в текстовом редакторе, так что, вероятно, у него есть несколько неправильных методов, но вы поняли:

@helper GenerateFormForContact(string method, string action, bool includeMailTag) {
   <form action="@action" method="@method">
      @Html.Label("some label")
      @Html.Textbox("clientName", null, new { placeholder = "Your name", required = "required" })

      @Html.Label("some label")
      <input type="email" name="emailName" placeholder="Your mail" required="required" />      
   </form>
}

Многоечище имхо.Частичное будет выглядеть почти так же, за исключением того, что вы передадите модель или будете использовать ViewData.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...