【问题标题】:How to generate "action" method for <form> tag builder in in ASP.NET core如何在 ASP.NET 核心中为 <form> 标记生成器生成“动作”方法
【发布时间】:2017-07-15 10:47:45
【问题描述】:

内置FormTagHelper支持“asp-action”、“asp-controller”、“asp-route”等属性。他们工作正常。但我不想为每个表单手动指定它们的值。是否可以根据当前页面URL自动生成“action”属性?

查看 FormTagHelper 的实现后,我发现它使用了 IHtmlGenerator。当我在我看来手动调用IHtmlGenerator.GenerateForm(this.ViewContext, null,null,null,"post", null) 时,它的效果很好。该表单是使用有效的“操作”方法(包括查询字符串)自动生成的。但是我能用 element 得到同样的结果吗?

根据这个实现,我需要在 FormTagBuilder 中调用以下代码行。但是“action”和“controller”设置为null

tagBuilder = Generator.GenerateForm(
                        ViewContext,
                        Action,
                        Controller,
                        Fragment,
                        routeValues,
                        method: null,
                        htmlAttributes: null);

但不知道怎么做

附:如果我指定asp-route="",那么它会生成“action”元素,但它不包含当前页面的查询字符串。

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-core asp.net-core-mvc


    【解决方案1】:

    看起来asp-all-route-data="@null" 会起作用。它看起来很丑,但很有效。

    我希望有一个更清洁的解决方案

    【讨论】:

    • 哇 - 我不敢相信这是有效的,这是我们必须使用的:(
    • BTW/FYI - 如果添加 asp 处理程序,查询字符串参数将丢失。
    • OK - 第三条评论(是否有徽章?) - 您可以只使用 asp-handler="" 并且它会生成操作,但如果有的话,它将再次替换查询字符串.否则只是一个简单的动作
    猜你喜欢
    • 2021-12-05
    • 2018-10-29
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 2022-06-15
    • 2014-11-17
    • 1970-01-01
    • 2011-12-14
    相关资源
    最近更新 更多