ASP.NET MVC2应用程序的提交按钮返回带有附加“表单”的URL

时间:2010-10-27 21:54:10

标签: asp.net asp.net-mvc asp.net-mvc-2 post get

好的,如果问题的方块不清楚,我很抱歉,如果你明白我的意思,请不要犹豫,帮我想一个更好的。

无论如何,我的表单有一个<input type="submit">元素,我希望它返回与元素所在页面的URL相同的URL。

目前,如果我点击该按钮,则会将我从/Calculate/Quadratic转到/Calculate/QuadraticForm

在我的控制器中,我有以下代码:

    [AcceptVerbs(HttpVerbs.Get)]
    public ViewResult Quadratic()
    {
        ViewData["Root1"] = "";
        ViewData["Root2"] = "";
        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ViewResult Quadratic(QuadCalc boss)
    {
        ViewData["Root1"] = x1;
        ViewData["Root2"] = x2;
        return View();
    }

这是我的Quadratic视图页面的标记和代码,其中包含我提到的包含提交按钮的表单:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>Quadratic</h2>

    <% using(Html.BeginForm("QuadraticForm", "Calculate")) %>
    <% { %>
    <div>
        a: <%= Html.TextBox("quadraticAValue") %>
        <br />
        b: <%= Html.TextBox("quadraticBValue") %>
        <br />
        c: <%= Html.TextBox("quadraticCValue") %>
        <br />
        <input type="submit" id="quadraticSubmitButton" value="Calculate!" />
        <br />
        <p><%= ViewData["Root1"] %></p>
        <p><%= ViewData["Root2"] %></p>
    </div>
    <% } %>
</asp:Content>

因此,我真正想要的是让提交按钮返回相同的页面,但HTTP帖子将帮助应用程序传递新的ViewData。除非我解释这一切都错了。

1 个答案:

答案 0 :(得分:4)

问题出在您的BeginForm方法中,该方法调用QuadraticForm操作

<% using(Html.BeginForm("QuadraticForm", "Calculate")) %>

如果您想为表单提供ID,请使用

<% using (Html.BeginForm("Quadratic", "Calculate", FormMethod.Post, new { id = "QuadraticForm" })) { %>

如果您不介意ID并且想要返回相同的操作,请使用

<% using(Html.BeginForm() %>

参数是:

  • 操作名称
  • 控制器名称
  • 表单方法(获取/发布)
  • 表单属性