我的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");
}
});
});
答案 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.
})
}