如何处理来自视图组件(Razor Core 2)的表单发布

xBe*_*erx 5 razor asp.net-core-2.0 asp.net-core-viewcomponent

这个周末与视图组件有很多斗争。

我尝试添加一个执行自动回发 onchange 的下拉列表。此下拉列表位于视图组件上。

我有两个问题:

  1. 发布后我没有得到 asp-page-handler,它是否像我在 form-tag 上实现的那样工作?
  2. Post 在包含视图组件的剃刀页面上调用方法 public void OnPost。我认为在 View Component 上有一个方法会更好,比如 OnChangeProject?

我的视图(视图组件)的代码:

<form asp-page-handler="ChangeProject" method="post">

    @Html.AntiForgeryToken()
    @Html.DropDownList("id", new SelectList(Model, "Id", "Id"), new { onchange = "this.form.submit()" })

</form>
Run Code Online (Sandbox Code Playgroud)

提前致谢!!

Eli*_*nes 2

我遇到了同样的问题,我解决它的方法已经在你的问题中得到了回答。

表单调用是在嵌入视图组件的页面上进行的。我认为甚至不可能在视图组件中调用处理程序,asp-page-handler因为这是 Razor Pages 标记帮助程序。

我让它工作的方法只是将页面处理程序方法放在PageModel嵌入视图组件的方法上。在您的情况下,您可以简单地在 Razor 页面上实现此处理程序:

public IActionResult OnPostChangeProject()
{
    // ... do Something
}
Run Code Online (Sandbox Code Playgroud)

我不知道如何在视图组件中触发控制器方法。可能会创建一个新的控制器类,并在表单标记中使用asp-controller和路由到它。asp-action