在ASP.NET MVC 3中使用HtmlHelper在表单标记中嵌套多个标签和输入
本文关键字:嵌套 输入 标签 HtmlHelper NET ASP MVC 表单 | 更新日期: 2023-09-27 18:22:03
如何在ASP.NET MVC3中使用HtmlHelper在表单标记中嵌套多个标签和输入?
我的代码如下:
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);
}
如果要将labelEmailName
、inputEmailName
和其他元素(TagBuilder
)包含在已创建的表单或任何其他TagBuilder
中,请使用TagBuilder.InnerHtml
,如下所示:
form.InnerHtml += labelEmailName.ToString();
form.InnerHtml += inputEmailName.ToString();
这不是一个答案,而是一个建议。有什么理由不使用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>
}
更干净的IMHO。除了传入模型或使用ViewData之外,Partial看起来几乎完全相同。