Кнопка отправки приложения ASP.NET MVC2 возвращает URL с добавленной «формой» - PullRequest
0 голосов
/ 28 октября 2010

Хорошо, извините, если вопрос не ясен, и если вы понимаете, о чем я, пожалуйста, не стесняйтесь, помогите мне придумать лучший вариант.

В любом случае, у меня есть элемент <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 view, которая включает в себя форму, включающую кнопку отправки, на которую я ссылался:

<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 Ответ

4 голосов
/ 28 октября 2010

Проблема в вашем методе BeginForm, который вызывает действие QuadraticForm

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

Если вы хотите присвоить форме идентификатор, вы должны использовать

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

Если вы не возражаетео ID и хотите просто вернуться к тому же действию просто используйте

<% using(Html.BeginForm() %>

Параметры:

  • Имя действия
  • Имя контроллера
  • Метод формы (get / post)
  • Атрибуты формы
...