“返回视图/重定向至操作”没有任何作用

时间:2018-11-06 10:48:05

标签: c# asp.net asp.net-mvc

我的GameController.cs中具有以下方法

        public ActionResult Index(bool newgame, int gameId)
    {
        if (newgame)
        {
            game = new Game();
            game.Characters = AddCharacters();
            game.Player1 = (User)Session["User"];
            game.Key = getKey();
        }
        else
        {
            return null;
        }
        //else
        //{
        //    game = new Game();
        //    GetChat();
        //    GetCharacters();
        //    //game.Player1 = ?(DB)
        //    game.Player2 = (User)Session["User"];
        //    //Index();
        //}
        ViewGame Vgame = new ViewGame(game);

        int p1Char = rnd.Next(1, 23);
        int p2Char = p1Char;

        do
        {
            p2Char = rnd.Next(1,23);
        }
        while (p2Char == p1Char);

        Vgame.Player1.Character = Vgame.Characters[p1Char];

        CreateGame(Vgame.Key, Vgame.Player1.Character, Vgame.Characters[p2Char]);

        return View(Vgame);
    }

除了RedirectToAction之外,所有方法都可以使用此方法,它什么也不做。.没有错误消息,没有警告,没有崩溃,什么也没有。我还尝试用“ Return View();”代替它。但这也不起作用,虽然我在Views> Game> Index.cshtml

中有一个视图

可能我错过了一些大事,但我似乎找不到。

@model GuessWho.Models.ViewGame
@{
    ViewBag.Title = "Guess Who?!";
    int i = 0;
}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <div id="containerGame">
        <div id="upperRow">
            <div id="TitleText">
                <h1>@ViewBag.Title</h1>
            </div>
            <div id="players">
                <div class="player mr">
                    <div class="image">
                    </div>
                    <p>@Model.Player1.Username</p>
                </div>
                <div class="player">
                    <div class="image">
                    </div>
                    <p>@Model.Player1.Username</p>
                </div>
            </div>
        </div>

        <div id="gameField">
            @foreach (var item in Model.Characters)
            {
                <div class="char" id="@i" onclick="ShowDropDown(this.id)">
                    <img src="~/Content/Images/Characters/@item.ImageSource" class="character" alt="Character" />
                    <img src="~/Content/Images/Cross.png" class="cross" alt="Cross" />
                    <p>@item.Name</p>
                </div>
                i++;
            }
            <div id="myDropdown" class="dropdown-content">
                <a href="#" onclick="Flip()">Flip</a>
                <a href="#">Guess</a>
                <a href="#" onclick="Highlight()">Highlight</a>
                <a href="#" class="red" onclick="Hide()">Hide</a>
            </div>
        </div>
        <div id="chatBox">
            @foreach (var item in Model.Chat)
            {
                <div class="chat">
                    <p class="sender">@item.Sender.Username:</p>
                    <p class="message">@item.Message</p>
                    <p class="time">@item.Time</p>
                </div>
            }
        </div>
        <div id="sendBox">
            <div class="chatContent" style="display: none;">
                <input type="button" class="YesNoBtn" value="Yes" id="yesButton" onclick="Send(this)" />
                <input type="button" class="ml YesNoBtn" value="No" id="noButton" onclick="Send(this)" />
            </div>
            <div class="chatContent">
                <textarea id="message" class="ChatField" placeholder="Send a chat.."></textarea>
                <input type="button" id="sendmessage" class="SendBtn" value="Send" />
            </div>
        </div>
        <div id="myChar" onclick="ToggleChar()">
            <div id="header">
                <p>My Character</p>
            </div>
            <div class="char" id="current">
                <img src="~/Content/Images/Characters/@Model.Player1.Character.ImageSource" class="character" alt="Character" />
                <p>@Model.Player1.Character.Name</p>
            </div>
        </div>
    </div>
</body>
</html>

MenuController.cs

        public ActionResult CreateGame()
    {
        return RedirectToAction("Index", "Game", new { newgame = true, gameId = 0 });
    }

以及我的MenuController的Index.cshtml中:

            $('#createGame').click(function () {
        $.ajax({
            url: '@Url.Action("CreateGame", "Menu")',
            type: 'GET',
            success: function (result) {
            },
            error: function () {
                alert("error");
            }
        });
    });

1 个答案:

答案 0 :(得分:0)

由于您是通过AJAX调用该方法的,因此必须发送回的指令与通过提交按钮使用MVC标准时的指令不同。

以下是将重定向发送回AJAX调用的示例:

控制器

return Json(new { success = true, url = Url.Action("Index", new { param1 = "example" }) });

查看

    $.ajax({
        type: "POST",
        contentType: "application/json",
        url: postUrl,
        data: JSON.stringify(submitData)
    }).done(function (response) {
        if (response.success) {
            window.location.href = response.url;
        } else {
            //something went wrong.
        }

    }).error(function (ex) {
        //something went wrong.
    })
    }