首页 > 解决方案 > 在 MVC5 Url.Content() 中放置一个 JS 变量

问题描述

我想在@Url.Content("").

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

只要此列为空,我就会显示一个模式来选择其主页。因此,一旦连接返回“成功”,我就会重定向到正确的页面,但我无法将变量@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'

标签: jqueryasp.net-mvc-5

解决方案


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

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

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


推荐阅读