【问题标题】:Form Post from View Component来自视图组件的表单发布
【发布时间】:2016-06-13 08:36:44
【问题描述】:

我正在构建一个小型 Web 应用程序来测试新的 ASP.NET Core MVC。 我实现了一个视图组件,它包含一个登录表单,我需要将其插入到整个应用程序的各个位置。我的表单当前将数据发布到处理登录的普通控制器。

现在鉴于用户提供了错误的登录信息,我想在模型状态中添加一条错误消息并将其显示在我的表单下,就像正常验证一样。但问题是,既然视图组件可以集成到各种地方,那我怎么知道表单的post是从哪里来的呢?

我想仅在验证错误的情况下呈现用户用于再次输入其凭据的同一站点。有没有办法找出表单帖子来自哪个视图?或者更好的是,在 ASP.NET Core MVC 中是否有任何标准方法可以将表单作为视图组件处理?

【问题讨论】:

    标签: asp.net-mvc razor asp.net-core-viewcomponent


    【解决方案1】:

    如果您从ViewComponent 继承,您可以访问ViewContext 属性,其中包括有关路由数据的所有内容,包括操作和控制器。然后,将IUrlHelperFactory 注入到您的ViewComponent 中(通过构造函数,然后存储为私有字段),并通过从工厂获取IUrlHelper(传入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
        }
    }
    

    【讨论】:

    • 谢谢你! IUrlHelperFactory 是我找不到的魔术。
    猜你喜欢
    • 1970-01-01
    • 2018-09-26
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2019-09-27
    • 2018-01-27
    • 1970-01-01
    相关资源
    最近更新 更多