MVC 部分视图提交(POST)

6
我有一个公司对象,其中包含一组分支机构对象,
我的公司视图(位于公司目录中)在其中具有强类型的分支机构列表视图(位于分支目录中),
分支视图中的每个分支都有一个删除按钮,我想将其发布到分支控制器中的删除操作。
目前调用的删除操作是公司控制器中的操作
(公司和分支都有删除操作)
我相信我理解它这样做的原因,但在这种情况下最佳实践是什么....
1.分支列表局部视图应该位于公司目录还是分支目录中?
2.删除分支操作应该位于公司控制器还是分支控制器中?
我认为分支列表应该位于分支目录中并调用分支控制器,但当局部视图加载到公司详细信息视图中时,如何实现呢?
希望这讲得清楚,
谢谢,
马克
        <% foreach (var item in Model) { %>

    <tr>
        <td>
                    <form action="Edit" method="get">
            <input type="submit" value="Edit" id="Submit1" /> 
            <input type="hidden" name="id" value="<%= item.Id %>" /> 
        </form>
        |
        <form action="Branch" method="get">
            <input type="submit" value="Details" id="Submit2" /> 
            <input type="hidden" name="id" value="<%= item.Id %>" /> 
        </form>
        |
        <form action="BranchDelete" method="post">
            <input type="submit" value="BranchDelete" id="Submit1" /> 
            <input type="hidden" name="id" value="<%= item.Id %>" /> 
        </form>

我刚刚想到的另一种方法是,在公司控制器中设置一个操作,该操作将重定向到分支控制器 - 这不是首选方案。 - foz1284
1个回答

7

您需要用单独的表单标签包围要提交的每组字段。您可以在页面上拥有多个表单标签。实际上,您可能希望每个部分视图都有自己的表单标签,以提交到不同的控制器操作。

将部分视图放置在最合适的位置。文件位置与浏览器提交表单无关。

您可以像这样发布到不同的控制器。一个发布到Branch控制器,另一个发布到Company控制器。

<% using (Html.BeginForm("RemoveBranch", "Branch", FormMethod.Post, new { @class = "branchform" }))
   {

       Html.RenderPartial("~/Views/Branch/BranchView.ascx");    

}%>

<% using (Html.BeginForm("RemoveCompany", "Company", FormMethod.Post, new { @class = "companyform" }))
   {

       Html.RenderPartial("~/Views/Company/CompanyView.ascx");    

}%>

在每个视图或局部视图中,您只需要一个提交按钮:
<input type="submit" value="Delete" />

我已经为每个提交按钮使用了一个新的表单标签 - 请参见更新的帖子。 - foz1284
谢谢,那肯定可以运行,但感觉不是最干净的解决方案,但我可能错了! - foz1284
对我来说看起来很干净。我在很多地方都使用这种方法。 - rboarman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接