剃刀类库和html助手问题

时间:2019-04-14 05:16:30

标签: asp.net-core asp.net-core-2.0 asp.net-core-2.1 asp.net-core-2.2 razor-class-library

我创建了一个小型管理工具,因此决定将其转换为Razor类库,这样我也可以在其他应用程序中使用它。我创建了“剃刀类库”项目,并添加了我在主项目中拥有的所有剃刀页,然后尝试测试新项目。问题是该框架由于某种原因无法识别html助手,因此我创建了一个新的干净项目,并尝试找出问题所在,结果是该应用程序未触发razor页面和asp的后处理-for属性未正确使用属性值。我使用以下代码来测试Razor类库。

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助手正常工作,并在发生发布请求时调用OnPost操作?

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法,因此决定与您分享,以防其他人遇到相同的问题。

为了使其工作,我必须在Razor类库的pages文件夹中添加文件_ViewImports.cshtml并添加以下行:

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers