【问题标题】:Can I submit MVC6 view component?我可以提交 MVC6 视图组件吗?
【发布时间】:2015-12-04 09:32:57
【问题描述】:

我可以在视图组件中提交表单吗?我知道局部视图是不可能的。视图组件有自己的控制器,所以这个问题的目标是我是否可以使用这个控制器来提交组件视图呈现的表单。

MVC6 view components docs 中没有提到。 所以这是不可能的,我想,但也许我错了:)

【问题讨论】:

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


    【解决方案1】:

    类似于局部视图,视图组件也可以为您呈现一些 HTML。所以只要你的视图组件渲染的视图里面有一个有效的表单标签,是的,你可以提交表单。

    @model YourNamespace.LoginVM
    <form asp-controller="Home" asp-action="Login">
        <input asp-for="Name" />
        <input asp-for="Password" />
        <input type="submit" />
    </form>
    

    你需要确保你在 HomeController 中有一个 Login 动作方法

    [HttpPost]
    public ActionResult Login(LoginVM model)
    {
       //do something :)
    }
    

    要记住的重要一点是,你不应该在另一个表单标签中调用这个视图组件。一般规则是,您不应该嵌套表单

    <form id="main-form" asp-controller="main" asp-action="submit" method="post">
        <input asp-for="LocationName" />
        <input type="submit"  />
    </form>
    
    @Component.Invoke("Login")
    

    【讨论】:

    • 我很确定你不能使用 component.invoke 发布数据
    • 只要里面有表格,就可以提交。视图组件不是在页面中呈现一大块标记的帮助器(类似于部分视图)。
    • 通过 Component.Invoke 提交表单然后进行 Ajax 调用会有区别吗?我将部分视图视为提供静态内容的服务器,而 Viewcomponents 调用服务器以提供动态内容(很像 ajax 调用返回动态内容而不返回全新视图)。这是正确的吗??
    • 查看组件在服务器中执行
    • 那么,如果我需要提交表单,什么时候使用 Ajax 调用和 ViewComponents 比较好?
    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2011-02-21
    • 2010-12-16
    • 2011-03-19
    相关资源
    最近更新 更多