это сообщение JQuery мешает MVC3 перенаправить мой вид? - PullRequest
0 голосов
/ 03 марта 2012

Итак, это мой контроллер:

public class MyAccountController : Controller
{
    public ActionResult MyAction(int id = 1)
    {
        return View();
    }
    [HttpPost]
    public ActionResult MyAction(FormCollection values)
    {
        return Content(values["something"]);
    }  
}

и это мое мнение:

@using (Html.BeginForm())
{ 
    <input type="hidden" name="something" value="something" />
    <input type="submit" />
}

Он будет работать как положено, если вы нажмете кнопку отправки, он перенаправит страницу и покажет «что-то»

Но когда я изменю свое мнение на это:

<button id="button">submit</button>

<script type="text/javascript">
    $("#button").on("click", function (e) {
        $.post("/MyAccount/MyAction", {something:"something"})
    });
</script>

Он не будет возвращать «Контент» в браузер, я отлаживал приложение, и он попадает в действие после публикации, но когда приходит «вернуть контент (values ​​[« что-то »])»; это ничего не делает.

Неужели jQuery каким-то образом мешает моему приложению перенаправить страницу?

Ответы [ 4 ]

2 голосов
/ 03 марта 2012

$.post() - это вызов ajax.Вы должны обработать результат, если хотите что-то с ним сделать.

http://api.jquery.com/jQuery.post/

2 голосов
/ 03 марта 2012

Он ничего не делает, потому что вы не сказали ему ничего делать.
$.post просто выбирает данные с вашего сервера; это не отображает это или что-нибудь.

Вам нужно что-то сделать с данными в параметре обратного вызова, передав функцию.

1 голос
/ 03 марта 2012

Так как @SLaks и @bhamlin сказали, что $ .post - это вызов ajax. И вы должны обрабатывать то, что он получает от сервера. вот что я сделал:

<button id="button">submit</button>

<script type="text/javascript">
    $("#button").on("click", function (e) {
        $.post("/MyAccount/MyAction", { something: "something" }, function (data) {
            $('body').replaceWith(data);
        });
    });
</script>
0 голосов
/ 03 марта 2012

Похоже, вам не хватает точки с запятой:

    $.post("/MyAccount/MyAction", {something:"something"})

Изменить на

    $.post("/MyAccount/MyAction", {something:"something"});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...