【问题标题】:mvc partial view postmvc局部视图帖子
【发布时间】:2010-11-19 22:43:45
【问题描述】:

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

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

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

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

(公司和分公司都有删除操作)

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

  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>

【问题讨论】:

  • 我刚刚制定的另一种选择是,我可以在公司控制器中执行一个重定向到分支控制器的操作 - 这不是首选方案。

标签: asp.net-mvc partial-views


【解决方案1】:

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

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

您可以像这样发布到不同的控制器。 1 个职位给分公司控制人,1 个职位给公司控制人。

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

【讨论】:

  • 我已经为每个提交按钮使用了新的表单标签 - 请参阅更新后的帖子
  • 干杯,这当然有效,感觉不是最干净的解决方案,但我可能错了!
  • 对我来说似乎很干净。我到处都在使用这种方法。
猜你喜欢
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多