如何从视图组件处理表单帖子(Razor Core 2)

如何从视图组件处理表单帖子(Razor Core 2),razor,asp.net-core-2.0,asp.net-core-viewcomponent,Razor,Asp.net Core 2.0,Asp.net Core Viewcomponent,本周末,在视图组件方面有很多困难 我尝试添加一个dropdownlist,它会在更改后自动回发。此下拉列表位于视图组件上 我有两个问题: 我在文章之后没有得到asp页面处理程序,它是否像我在表单标签上实现的那样工作 Post在包含视图的页面上调用方法public void OnPost 组成部分。我认为最好是在这个问题上有一个方法 像OnChangeProject一样查看组件 我的视图(视图组件)的代码: @Html.AntiForgeryToken() @DropDownList(“id”,

本周末,在视图组件方面有很多困难

我尝试添加一个dropdownlist,它会在更改后自动回发。此下拉列表位于视图组件上

我有两个问题:

  • 我在文章之后没有得到asp页面处理程序,它是否像我在表单标签上实现的那样工作
  • Post在包含视图的页面上调用方法public void OnPost 组成部分。我认为最好是在这个问题上有一个方法 像OnChangeProject一样查看组件
  • 我的视图(视图组件)的代码:

    
    @Html.AntiForgeryToken()
    @DropDownList(“id”,新的选择列表(模型,“id”,“id”),新的{onchange=“this.form.submit()”})
    

    提前谢谢

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

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

    我的工作方式就是将页面处理程序方法放在嵌入视图组件的
    PageModel
    上。在您的情况下,您只需在Razor页面上实现此处理程序:

    public IActionResult OnPostChangeProject()
    {
        // ... do Something
    }
    

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

    可以通过使用ViewComponent(Name=“myviewcomponent”)装饰控制器来创建组合(控制器/ViewComponent)

    然后像往常一样创建invokeasync,但由于控制器不是从ViewComponent继承的,因此返回的结果将是ViewComponent结果之一(ViewComponentResult,et)

    然后,viewcomponent中的表单可以有一个带有asp控制器/操作标记帮助器的按钮,这些帮助器以控制器/操作为目标

    public IActionResult OnPostChangeProject()
    {
        // ... do Something
    }