【问题标题】:.Net core, use of <Select> in function not working.Net 核心,在函数中使用 <Select> 不起作用
【发布时间】:2021-01-30 05:26:30
【问题描述】:

在.cshtml页面中,我创建了以下方法

@functions
{
    public string GenerateSelect()
    {
        <select>
            <option value="0">Ignore</option>
            <option value="-1"></option>
        </select>

        return "";
    }
}

尝试使用like

<td class="borderLeft">
   @GenerateSelect()
</td>

但代码甚至没有编译并给出错误

错误 严重性代码描述项目文件行抑制状态 错误 MVC1006 该方法包含一个 TagHelper,因此必须是异步的并返回一个任务。例如,使用 ~/ 通常会导致 TagHelper 并需要异步任务返回父方法。

如果我们使用其他简单的 html 标签,那么 GenerateSelect() 方法可以正常工作,例如

  public string GenerateSelect()
   {
       <div>
           hello
       </div>

       return "";
   }

可能是什么问题?

【问题讨论】:

  • 请注意,返回 string 是无关紧要的。由于您没有使用结果,它应该是void。从 C# 块调用 @{ GenerateSelect(); }

标签: c# html asp.net-core html-helper


【解决方案1】:

由于您的选择选项包含将被视为 html taghelper 的值。所以你应该在你的函数方法中使用System.Threading.Tasks.Task而不是字符串。

更多细节,您可以参考以下代码:

@functions
{
    async System.Threading.Tasks.Task GenerateSelect()
    {
        <select>
            <option value="0">Ignore</option>
            <option value="-1"></option>
        </select>
    }
}

@{await GenerateSelect();}

结果:

【讨论】:

    【解决方案2】:

    尝试按照它的建议使其异步?

    @functions
    {
        public Task GenerateSelect()
        {
            <select>
                <option value="0">Ignore</option>
                <option value="-1"></option>
            </select>
        }
    }
    

    【讨论】:

    • 它给出错误严重性代码描述项目文件行抑制状态错误CS0161'_Views_Template_Mapping.GenerateSelect()':并非所有代码路径都返回一个值
    • @GurpreetKailey 实际上我认为您需要使用帮助程序,请参阅此处的文档:docs.microsoft.com/en-us/aspnet/web-pages/overview/…
    猜你喜欢
    • 2018-04-04
    • 1970-01-01
    • 2017-06-03
    • 2021-06-18
    • 2023-03-07
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多