在MVC5 Url中放入一个JS变量.内容()



我想在@Url.Content("")中放入一个URL。

我允许用户在我的门户中选择他们的主页(只要他们在主页上显示任何不必要的内容(,并将此值放在我的user表的一列中。

只要此列为空,我就会显示一个模式来选择其主页。因此,一旦连接返回"0";成功";,我重定向到正确的页面,但无法在@Url.Content(HERE)中传递列中值的变量(例如:/Home/Index(。

这是我的代码:

IdentificationSucces = function(data) {
if (@Session["SpAccueilDefaut"]) {
var url = @Session["SpAccueilDefaut"].ToString();
window.location.href = '@Url.Action("" + url +"")';
} else {
window.location.href = '@Url.Content("~/Intranet/Index")';
}
};

我的url变量出错,这是消息:

名称'url'在当前上下文中不存在

您正在客户端的JS中定义urlUrl.Action()调用发生在服务器端。两者不能以您尝试的方式直接交互。

这种情况下的解决方法是将Session["SpAccueilDefaut"]值直接提供给Url.Action(),因为它们都是服务器端的。

此外,如果Session["SpAccueilDefaut"]中的值是一个字符串,从稍后使用的上下文来看似乎是这样,那么您需要在JSif条件中使用引号对其进行分隔:

IdentificationSucces = function(data) {
if ('@Session["SpAccueilDefaut"]') {
window.location.href = '@Url.Action(Session["SpAccueilDefaut"].ToString())';
} else {
window.location.href = '@Url.Content("~/Intranet/Index")';
}
};

顺便说一句,我建议你研究一下客户端和服务器端编程之间的区别。理解这一点对于开发基于web的技术至关重要:客户端编程和服务器端编程之间的区别是什么?

最新更新