1

我习惯RenderAction在我的视图中包含以下表格:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<SelectListItem>>" %>
<% using (Html.BeginForm("form1", "UserControls", FormMethod.Post, new { @id = "form1" }))
{ %>
<div id="superDiv">Super User | Account:  <%= Html.DropDownList("dropdown", Model)%>
   <button type="submit" class="button">Button</button>
</div>
<% } %>

问题是,当我在视图中有一个表单时,例如:

<% using (Html.BeginForm("Reports", "Report", FormMethod.Post, new { @id = "reportForm", style= "display:none" }))
   { %>
   <%: Html.AntiForgeryToken()%>

  <%: Html.Hidden("reportType", null, new { @id = "reportType" }) %>
    <div class="middle"><button type="submit" class="button">Generate Report</button>
<% } %>

它将自动提交表单RenderAction,如何防止?

4

1 回答 1

1

也许你应该使用Partial而不是RenderAction

我用它来处理 1 页上的两种表单(带有 2 个提交按钮):

第一个视图

@using (Html.BeginForm("LogOn", "Account", FormMethod.Post)){...}

第二视图

@using (Html.BeginForm("Register", "Account", FormMethod.Post)) {...}

第三个主视图:

<div style="...">
<div>
    @Html.Partial("Login")
</div>
<div>
    @Html.Partial("Register")
</div>

更新:

我需要将数据加载到用户控件中,并在多个视图/控件上使用它。这如何与部分一起使用?

您可以创建Helper将接受您的数据/参数并通过部分视图呈现

public static MvcHtmlString MyRegisterUserControl(this HtmlHelper html, SomeClass data)
    {
        //maybe some calculations here
        return html.Partial("Register", data);
    }

然后你可以在你的视图中使用它(类似的东西):

@Html.MyRegisterUserControl(new SomeClass(){...});
于 2011-04-22T12:15:54.200 回答