MVC Razor @Functions 创建文本框
MVC Razor @Functions create textbox
我正在使用 vNext(带有 Core 5.0 的 MVC6)。
我在我的一个视图中声明了 'functions',在其中我有一个方法可以创建一个文本框并将其添加到视图中。
@functions {
public void CreateTextBox()
{
@Html.Raw(@Html.TextBox("a", "b"));
}
}
这不会创建文本框元素,但如果我执行下面的代码,则会创建一个文本框:
@functions {
public HtmlString CreateTextBox()
{
return @Html.TextBox("a", "b");
}
}
@using (Html.BeginForm())
{
@Html.Raw(CreateTextBox());
}
我的问题是:是否可以通过 CreateTextBox() 方法在不返回任何内容且不使用 Html.BeginForm() 的情况下创建文本框?那么有没有办法使第一个选项起作用?
不需要函数和@Html.BeginForm()。只需将 @Html.Raw(@Html.TextBox("a", "b")); 放入您的 HTML 代码中想要放置一个文本框,它将呈现一个文本框。
使用助手。函数用于实际上应该在 ViewModel 中的东西(即将模型值转换为可打印值),助手在那里帮助输出 HTML。
将其粘贴到您的 App_Code 目录中名为 FormHelpers.cshtml
:
的文件中
@helper PrintFormWithOneTextBox
{
@using (Html.BeginForm())
{
@Html.TextBox("a", "b");
}
}
然后你可以使用@FormHelpers.PrintFormWithOneTextBox()
调用它。
我正在使用 vNext(带有 Core 5.0 的 MVC6)。
我在我的一个视图中声明了 'functions',在其中我有一个方法可以创建一个文本框并将其添加到视图中。
@functions {
public void CreateTextBox()
{
@Html.Raw(@Html.TextBox("a", "b"));
}
}
这不会创建文本框元素,但如果我执行下面的代码,则会创建一个文本框:
@functions {
public HtmlString CreateTextBox()
{
return @Html.TextBox("a", "b");
}
}
@using (Html.BeginForm())
{
@Html.Raw(CreateTextBox());
}
我的问题是:是否可以通过 CreateTextBox() 方法在不返回任何内容且不使用 Html.BeginForm() 的情况下创建文本框?那么有没有办法使第一个选项起作用?
不需要函数和@Html.BeginForm()。只需将 @Html.Raw(@Html.TextBox("a", "b")); 放入您的 HTML 代码中想要放置一个文本框,它将呈现一个文本框。
使用助手。函数用于实际上应该在 ViewModel 中的东西(即将模型值转换为可打印值),助手在那里帮助输出 HTML。
将其粘贴到您的 App_Code 目录中名为 FormHelpers.cshtml
:
@helper PrintFormWithOneTextBox
{
@using (Html.BeginForm())
{
@Html.TextBox("a", "b");
}
}
然后你可以使用@FormHelpers.PrintFormWithOneTextBox()
调用它。