我正在使用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(“”)(参见下一个代码块),但我遇到的问题是:
以下是我想要做的一个例子,但是上面提到了错误:
function doSomething(ID) {
location.href = @Url.Content("~/Area/Controller/Action?ID=" + ID + "&ValueA=" + ValueA + "&ValueB=" + ValueB);
}
我该如何使这项工作?有没有更好的办法?
谢谢, 贝
答案 0 :(得分:6)
您应该将静态部分连接到动态部分:
location = "@Url.Content("~/Area/Controller/Action")?ID=" + ID + "&ValueA=" + ValueA + "&ValueB=" + ValueB;
外部"@...?ID="
是一个Javascript字符串文字
@Url.Content("...")
是服务器端代码,它将原始文本发送到Javascript文字。