Pet*_*ter 3 asp.net-mvc razor asp.net-core-viewcomponent
我正在构建一个小型 Web 应用程序来测试新的 ASP.NET Core MVC。我实现了一个包含登录表单的视图组件,我需要将其插入到整个应用程序的各个位置。我的表单当前将数据发布到处理登录的普通控制器。
现在考虑到用户提供了错误的登录信息,我想向模型状态添加一条错误消息并将其显示在我的表单下,就像正常验证一样。但是问题是view组件可以集成到各种地方,我怎么知道form post是从哪里来的呢?
我想呈现用户用来再次输入他的凭据的同一个站点,只有验证错误。有没有办法找出表单帖子来自哪个视图?或者更好的是有什么标准方法可以将表单作为 ASP.NET Core MVC 中的视图组件处理?
如果您继承自ViewComponent,则可以访问该ViewContext属性,其中包括有关路由数据的所有内容,包括操作和控制器。然后,注入IUrlHelperFactory您的 ViewComponent(通过构造函数,然后存储为私有字段),并通过IUrlHelper从工厂获取 an (传入ViewContext)并调用其Action()上的方法来重新创建 url 。
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
}
}
Run Code Online (Sandbox Code Playgroud)