【问题标题】:Put a JS variable in MVC5 Url.Content()在 MVC5 Url.Content() 中放置一个 JS 变量
【发布时间】:2021-06-16 00:13:15
【问题描述】:

我想在@Url.Content("") 中添加一个 URL。

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

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

【问题讨论】:

  • 如果@Session["SpAccueilDefaut"] 包含一个 url 那么你只需要window.location.href = "@Session["SpAccueilDefaut"].ToString()"(没有var url = 部分)。 @Url.Action(url) 暗示“url”是动作名称,而不是 url

标签: jquery asp.net-mvc-5


【解决方案1】:

您在客户端的 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 的技术至关重要:What is the difference between client-side and server-side programming?

【讨论】:

  • 谢谢,它的工作。我了解您关于了解客户端和服务器端之间区别的答案的第二部分。我说对我的项目的路径进行更正,不再使用@Url.Action() 和@Url.Content()。 (我没有足够的声誉来投票给答案)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
相关资源
最近更新 更多