【发布时间】:2018-09-01 07:08:07
【问题描述】:
这是我的页面(PlayGame)。从我的控制器操作生成为:
// GET: Games/PlayGame/Id
[AllowAnonymous]
public ActionResult PlayGame(Game game)
{
return View(game);
}
在 PlayGame 页面上,我想做一个在我的 javascript 中定义的动作。这是 PlayGame 的 .cshtml 页面:
@model CapstoneApplication.Models.Game
@Scripts.Render("~/Scripts/RouletteWheel.js")
<input type="button" value="Spin" style="float:left" id="spin"/>
<canvas id="canvas" width="500" height="500"></canvas>
<input type="submit" value="Play" style="float:left" id="play"
onclick="play(@Model.Id)" />
<script src="~/Scripts/RouletteWheel.js"></script>
这个动作应该引用一个javascript文件动作:
function play(gameId) {
window.location.href = '@Url.Action("PlayGameRound", "Games")';
}
当调用此操作时,我想导航到 PlayGameRound 页面并从 .js 文件中传递一个 gameId 和类别。
//POST: Games/PlayGameRound/GameId/Category
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult PlayGameRound(int gameId, string category)
{
//TODO: Get the selected category and shoot a random question from
the category
var random = new Random();
var game = this.db.Games.Find(gameId);
var questionIndex = random.Next(0, game.Round.Questions.Count);
var question = game.Round.Questions.ElementAt(questionIndex);
if (category.Equals("Crown"))
{
}
while (question.Category.CategoryName != category)
{
questionIndex = random.Next(0, game.Round.Questions.Count);
question = game.Round.Questions.ElementAt(questionIndex);
}
return View(game);
}
由于某种原因,当 .js 中的这个函数被调用时:
function play(gameId) {
window.location.href = '@Url.Action("PlayGameRound", "Games")';
}
它返回给我这个页面:
返回的 Url 是 /Games/PlayGame/@Url.Action(%22PlayGameRound%22,%20%22Games%22) 但是
我正在尝试请求类似:/Games/PlayGameRound/GameId/Category
请帮忙。
【问题讨论】:
-
不能在 javascript 文件中使用 Razor 语法,Razor 语法只能在 View、.cshtml 文件中使用
标签: javascript c# asp.net-mvc-5 visual-studio-2017