提问者:小点点

在MVC5 url.content()中放入一个JS变量


我想将URL放入@URL.content(“”)中。

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

只要此列为空,我就会显示一个模式来选择它的主页。因此,一旦连接返回“success”,我就会重定向到正确的页面,但我无法在@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”在当前上下文中不存在


共1个答案

匿名用户

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

这种情况下的解决办法是直接向url.action()提供session[“spaccueildefaut”]值,因为它们都在服务器端。

此外,如果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的技术至关重要:客户端编程和服务器端编程之间有什么区别?