MVC3 - Javascript中的动态URL重定向

Ant*_*een 2 javascript url redirect razor asp.net-mvc-3

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

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

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

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

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

  • 当前上下文中不存在名称"ID"
  • "ValueA"这个名称在当前上下文中不存在
  • 当前上下文中不存在名称"ValueB"

这是我想要做的一个例子,但是得到上面提到的错误:

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

我怎样才能做到这一点?有没有更好的办法?

谢谢,托尼

SLa*_*aks 6

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

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

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

  • 顺便说一下,你应该调用`@ Url.Action`而不是`Content`. (3认同)