来自视图组件的表单 Post
Form Post from View Component
我正在构建一个小型 Web 应用程序来测试新的 ASP.NET Core MVC。
我实现了一个视图组件,其中包含一个登录表单,我需要将其插入到整个应用程序的各个位置。我的表单当前 post 将数据发送到处理登录的普通控制器。
既然用户提供了错误的登录信息,我想向模型状态添加一条错误消息并将其显示在我的表单下,就像正常验证一样。但问题是,既然视图组件可以集成在各种地方,我如何找出表单post来自哪里?
我想呈现用户用来再次输入其凭据的同一个站点,只是出现验证错误。有什么办法可以查出post这个View来自哪个View吗?或者更好的是,在 ASP.NET Core MVC 中是否有任何标准方法将表单作为视图组件处理?
如果您继承自 ViewComponent
,您可以访问 ViewContext
属性,其中包括有关路由数据的所有内容,包括操作和控制器。然后,将 IUrlHelperFactory
注入您的 ViewComponent(通过构造函数,然后存储为私有字段),并通过从工厂获取 IUrlHelper
(传入 ViewContext
) 并对其调用 Action()
方法。
public class LoginViewComponent : ViewComponent {
public LoginViewComponent(IUrlHelperFactory factory) {
this.factory = factory;
}
private IUrlHelperFactory factory;
public void Invoke() {
IUrlHelper helper = factory.GetUrlHelper(ViewContext);
helper.Action(); // returns url to the current controller action
}
}
我正在构建一个小型 Web 应用程序来测试新的 ASP.NET Core MVC。 我实现了一个视图组件,其中包含一个登录表单,我需要将其插入到整个应用程序的各个位置。我的表单当前 post 将数据发送到处理登录的普通控制器。
既然用户提供了错误的登录信息,我想向模型状态添加一条错误消息并将其显示在我的表单下,就像正常验证一样。但问题是,既然视图组件可以集成在各种地方,我如何找出表单post来自哪里?
我想呈现用户用来再次输入其凭据的同一个站点,只是出现验证错误。有什么办法可以查出post这个View来自哪个View吗?或者更好的是,在 ASP.NET Core MVC 中是否有任何标准方法将表单作为视图组件处理?
如果您继承自 ViewComponent
,您可以访问 ViewContext
属性,其中包括有关路由数据的所有内容,包括操作和控制器。然后,将 IUrlHelperFactory
注入您的 ViewComponent(通过构造函数,然后存储为私有字段),并通过从工厂获取 IUrlHelper
(传入 ViewContext
) 并对其调用 Action()
方法。
public class LoginViewComponent : ViewComponent {
public LoginViewComponent(IUrlHelperFactory factory) {
this.factory = factory;
}
private IUrlHelperFactory factory;
public void Invoke() {
IUrlHelper helper = factory.GetUrlHelper(ViewContext);
helper.Action(); // returns url to the current controller action
}
}