MVC3 - Javascript中的动态URL重定向

时间:2011-09-08 18:08:42

标签: javascript asp.net-mvc-3 url redirect razor

我正在使用C#,MVC3和Razor。

我有一个javascript函数(在视图中),在单击特定菜单项时会调用它。在这个函数中,我需要构建一个带参数的新URL(基于屏幕上的其他选择)并重定向到它。它希望它做这样的事情:

ValueA和ValueB是javascript部分中的变量,并使用值填充。

function doSomething(ID) {
    location.href =  "../Area/Controller/Action?ID=" + ID + "&ValueA=" + ValueA + "&ValueB=" + ValueB;
  }

但是,由于MVC的性质,我需要确保URL始终正确,无论用户如何访问该页面。我试过使用@ Url.Content(“”)(参见下一个代码块),但我遇到的问题是:

  • 当前上下文中不存在名称“ID”
  • 当前上下文中不存在名称“ValueA”
  • 当前上下文中不存在名称“ValueB”

以下是我想要做的一个例子,但是上面提到了错误:

function doSomething(ID) {
    location.href = @Url.Content("~/Area/Controller/Action?ID=" + ID + "&ValueA=" + ValueA + "&ValueB=" + ValueB);
  }

我该如何使这项工作?有没有更好的办法?

谢谢, 贝

1 个答案:

答案 0 :(得分:6)

您应该将静态部分连接到动态部分:

location = "@Url.Content("~/Area/Controller/Action")?ID=" + ID + "&ValueA=" + ValueA + "&ValueB=" + ValueB;

外部"@...?ID="是一个Javascript字符串文字 @Url.Content("...")是服务器端代码,它将原始文本发送到Javascript文字。