Anidar múltiples etiquetas y entradas dentro de la etiqueta de formulario usando HtmlHelper en ASP.NET MVC 3

¿Cómo anido varias etiquetas y entradas dentro de la etiqueta de formulario con HtmlHelper en ASP.NET MVC3?

Mi código está abajo:

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);
}

preguntado el 01 de febrero de 12 a las 14:02

No esperaba ver su pregunta como comentarios en el código. Quizás sería más claro si edita su pregunta y agrega las preguntas en la parte superior, fuera del código. Puede dejar los comentarios en el código para ayudar a las personas a encontrar la línea. -

2 Respuestas

Si quieres adjuntar labelEmailName, inputEmailName y otros elementos (TagBuilder's) dentro del formulario ya creado o cualquier otro TagBuilder utilizado TagBuilder.InnerHtml Me gusta:

form.InnerHtml += labelEmailName.ToString();
form.InnerHtml += inputEmailName.ToString();

Respondido el 05 de junio de 13 a las 09:06

Doh! ¿Dónde estaba mi cabeza? Gracias :) - Snake Eyes

Esta no es una respuesta, sino una sugerencia. ¿Alguna razón para no usar un asistente de Razor o un parcial para esto?

Escribí esto en un editor de texto, por lo que probablemente tenga algunos métodos incorrectos, pero entiendes la idea:

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

Mucho más limpio en mi humilde opinión. Un parcial se vería casi exactamente igual, excepto que pasaría un modelo o usaría ViewData.

Respondido 01 Feb 12, 18:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.