Отправка формы и перенаправление на действие ASP.NET MVC - PullRequest
6 голосов
/ 16 июля 2009

У меня есть панель навигации, которая использует JQuery для перехода между 4 этапами процесса регистрации.

Однако мне нужно убедиться, что все работает с отключенным JS.

Итак, у меня есть эти 4 изображения ссылки внизу страницы, и мне нужно, чтобы при щелчке по одному из них проводилось текущее действие, чтобы я мог сохранить все данные формы и затем перенаправить на следующий этап.

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

Я мог бы добавить 4 разные кнопки отправки с разными классами для фоновых изображений и т. Д., Но это неправильно.

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 16 июля 2009

Без Javascript простая ссылка не может быть отправлена ​​через POST. Вы должны использовать кнопку отправки, чтобы сделать это. К счастью, HTML предоставляет простой способ сделать кнопку отправки изображения:

<input type="image" src="http://url/to/image" alt="Step 1" id="btnStep1" />

Вы всегда можете добавить обработку jQuery для Javascript-совместимого:

$('#btnStep1').click(function(){...});
2 голосов
/ 15 апреля 2010

Вы можете использовать атрибут, который я нашел в net , который обрабатывает несколько кнопок в одной форме. Это определит, какое действие выполняется на контроллере. Таким образом, у вас может быть 4 действия на контроллере, и правильное выполняется в зависимости от того, какая кнопка была нажата, независимо от того, где она была вызвана.

Так мало примеров; разметка ...

<input type="submit" name="action" value="step1"/>
<input type="submit" name="action" value="step2"/>
<input type="submit" name="action" value="step3"/>
<input type="submit" name="action" value="step4"/>

Тогда в контроллере ...

    [HttpPost]
    [MultiButton(MatchFormKey = "action", MatchFormValue = "step1")]
    public ActionResult Step1(/* parameters */) { ... }

    [HttpPost]
    [MultiButton(MatchFormKey = "action", MatchFormValue = "step2")]
    public ActionResult Step2(/* parameters */) { ... }

    [HttpPost]
    [MultiButton(MatchFormKey = "action", MatchFormValue = "step3")]
    public ActionResult Step3(/* parameters */) { ... }

    [HttpPost]
    [MultiButton(MatchFormKey = "action", MatchFormValue = "step4")]
    public ActionResult Step4(/* parameters */) { ... }

Затем вы можете с относительной легкостью нажимать между любыми шагами в процессе регистрации (возможно, после того, как проверка пройдена и вы прошли каждый первый шаг).

Надеюсь, это кому-нибудь поможет. Я только что зафиксировал дату публикации вопроса, но решил, что все равно отправлю: -)

2 голосов
/ 16 июля 2009

Вы можете иметь несколько кнопок отправки в вашей форме:

<input type="submit" name="step1" value="Step 1"/>
<input type="submit" name="step2" value="Step 2"/>
<input type="submit" name="step3" value="Step 3"/>

и в вашем действии:

public ActionResult Action(FormCollection form)
{
    if (!string.IsNullOrEmpty(form["step1"]))
    {
        // Step 1 button was clicked
    } 
    else if (!string.IsNullOrEmpty(form["step2"]))
    {
        // Step 2 button was clicked
    }
    else if (!string.IsNullOrEmpty(form["step3"]))
    {
        // Step 3 button was clicked
    }
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...