要解决ASP.NET Core MVC在包装在表单中时会添加额外的的问题,可以使用以下方法:
使用@Html.EditorFor
代替@Html.TextBoxFor
或@Html.HiddenFor
。
@model YourModel
@using (Html.BeginForm())
{
@Html.EditorFor(m => m.YourProperty)
}
这样会生成包装在表单中的输入字段,而不会生成额外的。
使用@Html.DisplayFor
和@Html.HiddenFor
组合来显示和传递数据。
@model YourModel
@using (Html.BeginForm())
{
@Html.DisplayFor(m => m.YourProperty)
@Html.HiddenFor(m => m.YourProperty)
}
这样会显示属性的值,同时在表单中传递该值,而不会生成额外的。
使用自定义的HTML Helper方法来生成所需的HTML标记。
public static class HtmlExtensions
{
public static IHtmlContent CustomInputFor(this IHtmlHelper htmlHelper, Expression> expression)
{
var inputTag = new TagBuilder("input");
inputTag.MergeAttribute("name", htmlHelper.NameFor(expression).ToString());
inputTag.MergeAttribute("value", htmlHelper.ValueFor(expression).ToString());
return inputTag;
}
}
使用自定义的HTML Helper方法生成输入字段。
@model YourModel
@using (Html.BeginForm())
{
@Html.CustomInputFor(m => m.YourProperty)
}
这样会生成自定义的,而不会生成额外的。
通过以上方法,可以解决ASP.NET Core MVC在表单中包装时生成额外的的问题。