выполнение отправки (обратной передачи) и перенаправления с ASP.net MVC - PullRequest
4 голосов
/ 02 апреля 2012

Я хочу использовать submit из моей разметки для действия ASP.net MVC.

Затем я хочу перенаправить запрос на другой URL.

Могу ли я сделать это? Или MVC, соответствующий только ajax?

Ответы [ 2 ]

3 голосов
/ 02 апреля 2012

Пост произойдет, если вы используете Html.BeginForm примерно так:

<% using(Html.BeginForm("HandleForm", "Home")) { %>
    <fieldset>
        <legend>Fields</legend>
        <p>
            <%= Html.TextBoxFor(m => m.Field1) %>
        </p>
        <p>
            <%= Html.TextBoxFor(m => m.Field2) %>
        </p>
        <p>
            <input type="submit" value="Submit" />
        </p> 
    </fieldset>
<% } %>

Тогда действие вашего контроллера может выполнить перенаправление:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult HandleForm(MyModel myModel)
{
    // Do whatever you need to here.

    return RedirectToAction("OtherAction", myModel);
}

public ActionResult OtherAction(MyModel myModel)
{
    return View(myModel);    
}

РЕДАКТИРОВАТЬ: : Приведенный выше пример теперь будет привязан к следующей модели и может передаваться между действиями:

public class MyModel
{
    public string Field1 { get; set; }
    public string Field1 { get; set; }
}
1 голос
/ 02 апреля 2012

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

Если вы хотите сохранить какие-либо из представленных данных для использования в методе действия, который вы перенаправляетевам нужно сохранить его в объекте TempData.

public class HomeController : Controller
{
    [HttpGet]
    public ActionResult Index()
    {
        // Get the e-mail address previously submitted by the user if it
        // exists, or use an empty string if it doesn't
        return View(TempData["email"] ?? string.Empty);
    }

    [HttpPost]
    public ActionResult Index(string email)
    {
        // Store the e-mail address submitted by the form in TempData
        TempData["email"] = email;

        return RedirectToAction("Index");
    }
}

Ваш Index вид будет выглядеть примерно так:

@using (Html.BeginForm("Index", "Home"))
{
    @* Will populate the textbox with the previously submitted value, if any *@
    <input id="email" type="email" name="email" value="@Model" />

    <button type="submit">Submit</button>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...