Razor class 库和 html 助手问题
Razor class library and html helpers problem
我创建了一个小型管理工具,并决定将其转换为 Razor class 库,这样我也可以在其他应用程序中使用它。我创建了 Razor Class Library 项目,并添加了主项目中的所有 Razor 页面,并尝试测试新项目。问题是框架出于某种原因无法识别 html 助手,所以我创建了一个新的干净项目并尝试找出问题所在,结果是应用程序没有触发 post razor 页面的操作和 asp-for 属性 没有正确使用 属性 值。我使用以下代码来测试 Razor Class 库。
Page1.cshtml.cs
public class Page1Model : PageModel
{
[BindProperty]
public Input MyInput { get; set; }
public class Input
{
public string Name { get; set; }
}
public void OnGet()
{
}
public void OnPost()
{
}
}
Page1.cshtml
@page
@model WebApplication1.MyFeature.Pages.Page1Model
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Page1</title>
</head>
<body>
<form method="post">
<input asp-for="MyInput.Name" /><br />
<input type="submit" />
</form>
</body>
</html>
生成的html如下
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Page1</title>
</head>
<body>
<form method="post">
<input asp-for="MyInput.Name" /><br />
<input type="submit" />
</form>
</body>
</html>
如您所见,MyInput.Name 的输入在我键入 Page1.cshtml 文件时出现。正确的输出应该是这样的:
<input type="text" id="MyInput_Name" name="MyInput.Name" value="" /><br />
我是否必须执行某些操作才能使 html 助手正常工作并在发生 post 请求时调用 OnPost 操作?
我找到了问题的解决方案,我决定与您分享,以防其他人遇到同样的问题。
为了使其正常工作,我必须在 Razor Class 库的页面文件夹中添加文件 _ViewImports.cshtml 并添加以下行:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
我创建了一个小型管理工具,并决定将其转换为 Razor class 库,这样我也可以在其他应用程序中使用它。我创建了 Razor Class Library 项目,并添加了主项目中的所有 Razor 页面,并尝试测试新项目。问题是框架出于某种原因无法识别 html 助手,所以我创建了一个新的干净项目并尝试找出问题所在,结果是应用程序没有触发 post razor 页面的操作和 asp-for 属性 没有正确使用 属性 值。我使用以下代码来测试 Razor Class 库。
Page1.cshtml.cs
public class Page1Model : PageModel
{
[BindProperty]
public Input MyInput { get; set; }
public class Input
{
public string Name { get; set; }
}
public void OnGet()
{
}
public void OnPost()
{
}
}
Page1.cshtml
@page
@model WebApplication1.MyFeature.Pages.Page1Model
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Page1</title>
</head>
<body>
<form method="post">
<input asp-for="MyInput.Name" /><br />
<input type="submit" />
</form>
</body>
</html>
生成的html如下
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Page1</title>
</head>
<body>
<form method="post">
<input asp-for="MyInput.Name" /><br />
<input type="submit" />
</form>
</body>
</html>
如您所见,MyInput.Name 的输入在我键入 Page1.cshtml 文件时出现。正确的输出应该是这样的:
<input type="text" id="MyInput_Name" name="MyInput.Name" value="" /><br />
我是否必须执行某些操作才能使 html 助手正常工作并在发生 post 请求时调用 OnPost 操作?
我找到了问题的解决方案,我决定与您分享,以防其他人遇到同样的问题。
为了使其正常工作,我必须在 Razor Class 库的页面文件夹中添加文件 _ViewImports.cshtml 并添加以下行:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers