Asp.net MVC отправить форму и показать все параметры формы в URL - PullRequest
2 голосов
/ 17 января 2012

У меня есть форма на мой взгляд и соответствующая кнопка отправки. Форма отвечает за выбор вариантов поиска некоторых предложений. URL домашней страницы выглядит следующим образом:

http://localhost/

когда я нажимаю кнопку отправки, вызывается действие соответствующего контроллера. Тем не менее, я бы хотел, чтобы все параметры формы отображались в URL (поэтому будет возможность поделиться ссылкой, например, между двумя людьми, и они будут иметь одинаковые результаты). Так, например, как я могу достичь (например) что-то вроде этого:

http://localhost/?startDate=20120215&endDate=20120230&catalog=ISA

Ответы [ 3 ]

3 голосов
/ 17 января 2012

Если вы сделаете метод формы GET, все переменные будут частью строки запроса.

Вы можете использовать эту перегрузку для изменения типа запроса формы:

FormExtensions.BeginForm Метод (HtmlHelper, String, String, FormMethod)

Или, если вы используете RedirectToAction, вы можете передать параметры как объект:

Метод Controller.RedirectToAction (String, Object)

1 голос
/ 17 января 2012

Вы должны указать, что форма отправляется с использованием GET http-запроса (а не публикации) и указать действие, на которое вы хотите перенаправить, чтобы вам не приходилось использовать RedirectToAction.

Например:

Контроллер:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult NextAction(IndexModel model)
    {
        return View();
    }
}

Модель:

public class IndexModel
{
    public string StartDate { get; set; }

    public string EndDate { get; set; }

    public string Catalog { get; set; }
}

Вид:

@model MvcApplication22.Models.IndexModel

@using (Html.BeginForm("NextAction", "Home", FormMethod.Get))
{
    <p>Start Date: @Html.EditorFor(m => m.StartDate)</p>
    <p>End Date: @Html.EditorFor(m => m.EndDate)</p>
    <p>Catalog: @Html.EditorFor(m => m.Catalog)</p>
    <input type="submit" value="submit" />
}

Но учтите, что не рекомендуется вносить какие-либо изменения в вашу систему в запросе GET http. Если необходимо внести какие-либо изменения, они должны быть выполнены в запросе POST.

0 голосов
/ 17 января 2012

отправьте форму, используя http метод GET, поэтому вывод вашей формы будет выглядеть как

<form method="get">...</form>
...