mvc局部视图帖子

时间:2010-11-19 22:43:45

标签: asp.net-mvc partial-views

我有一个公司对象,其中包含一个分支对象列表,

我的公司视图(驻留在公司目录中)中有一个强类型的分支列表视图(位于分支目录中),

分支视图中的每个分支都有一个删除按钮,我想将其发布到分支控制器中的删除操作。

目前调用的删除操作是公司控制器中的操作

(公司和分公司都有删除行动)

我相信我理解它正在做的事情,但是在这种情况下最好的做法是什么......

  1. 分支列表部分视图应该驻留在公司或分支目录中吗?
  2. 删除分支操作应该驻留在公司还是分支控制器中?
  3. 我认为分支列表应该在分支目录中并调用分支控制器,但是当局部视图加载到公司详细信息视图中时,如何让它执行此操作?

    希望有道理,

    谢谢,

    标记

            <% 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>
    

1 个答案:

答案 0 :(得分:7)

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

将部分视图放在最有意义的地方。文件位置与从浏览器提交表单的方式无关。

您可以像这样发布到不同的控制器。一个发布到分支机构控制器,一个发布到公司控制器。

<% 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" />