ASP.NET MVC3,Razor - 在Javascript中使用ViewBag或URL变量

时间:2012-01-22 19:07:21

标签: c# javascript asp.net-mvc asp.net-mvc-3 razor

我有一个ASP.NET MVC3项目,它在某些页面上使用标签条。制表位是用JavaScript构建的。当用户执行操作时,我希望能够将正确的选项卡打开,将它们重定向到正确的页面。为了实现这一点,我需要在URL中传递一个变量并使用JavaScript获取它的句柄,或者使用ViewBag或TempData传回一个变量,然后再使用JavaScript获取它的句柄。

所以我的问题是,如何使用JavaScript访问这些变量?

1 个答案:

答案 0 :(得分:2)

您可以在重定向时将值作为查询字符串参数传递,并且在目标操作中只需定义视图模型:

public class MyViewModel
{
    public string MyValue { get; set; }
}

然后有一个锚点或控制器操作,它将重定向到目标操作并将myvalue作为查询字符串参数传递:

@Html.ActionLink("go to foo", "foo", new { myvalue = "foo bar" })

当点击链接时,用户被重定向到Foo操作,该操作将视图模型作为参数,以便绑定自动发生并将此视图模型传递到相应的视图:

public ActionResult Foo(MyViewModel model)
{
    return View(model);
}

并在相应的视图中,您可以使用视图模型执行任何操作:

@model MyViewModel
<script type="text/javascript">
    var myValue = @Html.Raw(Json.Encode(Model.MyValue));
    // TODO: do something with the value
</script>