2017-07-15 22 views
0

内置的FormTagHelper支持“asp-action”,“asp-controller”,“asp-route”等属性。他们工作正常。但我不想为每个表单手动指定它们的值。是否可以根据当前页面URL自动生成“action”属性?如何在ASP.NET核心中为<form>标记生成器生成“动作”方法

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

根据这个实现,我需要在FormTagBuilder中调用以下代码行。但是,随着“行动”和“控制器”设置为null

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

但不知道如何做到这一点

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

回答

1

看起来像asp-all-route-data="@null"将工作。它看起来很丑,但它起作用。我希望可以有更清洁的解决方案