本周末很多人都在与View Component斗争。
我尝试添加一个自动回发onchange的下拉列表。此下拉列表位于视图组件上。
我有两个问题:
我的视图代码(查看组件):
<form asp-page-handler="ChangeProject" method="post">
@Html.AntiForgeryToken()
@Html.DropDownList("id", new SelectList(Model, "Id", "Id"), new { onchange = "this.form.submit()" })
</form>
提前致谢!!
答案 0 :(得分:0)
我遇到了同样的问题,而解决问题的方式已经在您的问题中得到了解答。
在您嵌入了View组件的页面上进行了表单调用。我认为使用asp-page-handler
在视图组件中调用处理程序是不可能的,因为这是Razor Pages标记帮助程序。
我得到它的方法是简单地将页面处理程序方法放在嵌入视图组件的PageModel
上。您可以在剃刀页面上简单地实现此处理程序:
public IActionResult OnPostChangeProject()
{
// ... do Something
}
我不知道如何触发视图组件中的控制器方法。可能创建一个新的Controller类,并在表单标签中使用asp-controller
和asp-action
路由到它。
答案 1 :(得分:0)
可以通过用ViewComponent(Name =“ myviewcomponent”)装饰控制器来创建组合(Controller / ViewComponent)。
然后像往常一样创建invokeasync,但是由于控制器不继承自ViewComponent,因此返回结果将是ViewComponent结果之一(ViewViewComponentResult等)。
然后,viewcomponent中的表单可以具有一个按钮,该按钮带有asp-controller / action标签助手,以控制器/动作为目标。