【问题标题】:Convert Razor String Variable to Javascript String Variable in MVC在 MVC 中将 Razor 字符串变量转换为 Javascript 字符串变量
【发布时间】:2016-10-19 08:34:04
【问题描述】:

我正在尝试将我的 cshtml 视图上的字符串变量(甚至布尔值)传递给我的 javascript 部分。如果它的整数,我可以成功地将剃刀部分的值传递给javascript。但我想要完成的是传递字符串值。这是我的 .cshtml 中的示例代码:

string strAnnouncement = "My announcement";
int intCounterValue = 1200;

要在 Javascript 上接收值,这是我的代码:

//Cannot get the value, always error on Developer Tool console
var SessAnnouncement = @strAnnouncement;

//Can get the value successfully
var SessInitTimer = @intCounterValue;

如您所见,我可以通过 javascript 在 SessInitTimer 上获取值为 1200。但在 SessAnnouncement 上,我收到 Uncaught ReferenceError: My Advertisement is not defined。

如何在我的 razor 部分获取 strAnnouncement 值并将其传递到脚本部分?

【问题讨论】:

  • 如果您想在 javascript 中访问它,您必须将 C# 变量括在单引号或双引号中。例如:var SessAnnouncement = '@strAnnouncement';

标签: javascript c# asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

它们被视为变量,并且由于您尚未定义它们,因此您会收到上述错误。

您需要用引号括起来才能被视为字符串。

var SessAnnouncement = "@strAnnouncement";

更好的方法是使用JSON.Encode() 方法

var SessAnnouncement = @Html.Raw(Json.Encode(strAnnouncement));

【讨论】:

  • 这适用于单个值。如果字符串中有换行符,JavaScript 会抛出语法错误异常。
  • @Suncat2000,对于多行使用反引号,即`@strAnnouncement`。但是,我会推荐第二种方法
  • 感谢您的提示,但仅当您的所有浏览器都支持模板文字时才有效。 Internet Explorer 没有。我最终使用@(new HtmlString(HttpUtility.JavaScriptStringEncode(Model.XmlProcessedText, true))) 对字符串进行编码并转义引号。效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-02
  • 2010-09-30
  • 1970-01-01
相关资源
最近更新 更多