我目前正在ASP.NET MVC中构建一个网站。我想在JavaScript中访问ViewData。在MVVM中使用ViewData的ASP.NET MVC
有没有什么办法可以在Controller中存储ViewData的View中使用JavaScript访问字符串值。 (我无法弄清楚正确的语法)。
我希望做这样的事情..
var str = ViewData["Text"];
我试过如下:
无功海峡= <%=计算机[ “文本”]%>
,但它没”工作。
有人可以请帮忙。
谢谢。
我目前正在ASP.NET MVC中构建一个网站。我想在JavaScript中访问ViewData。在MVVM中使用ViewData的ASP.NET MVC
有没有什么办法可以在Controller中存储ViewData的View中使用JavaScript访问字符串值。 (我无法弄清楚正确的语法)。
我希望做这样的事情..
var str = ViewData["Text"];
我试过如下:
无功海峡= <%=计算机[ “文本”]%>
,但它没”工作。
有人可以请帮忙。
谢谢。
像这样(剃刀):
var str = @Html.Raw(Json.Encode(ViewData["Text"]));
或(Web窗体),使用JavaScriptSerializer(和进口theproper命名空间到你的网页表单后 - System.Web.Script.Serialization
):
var str = <%= new JavaScriptSerializer().Serialize(ViewData["Text"])) %>;
请不要在ASP.NET MVC应用程序中使用ViewData上。使用视图模型和强类型的意见,使您的代码如下所示:
var str = <%= new JavaScriptSerializer().Serialize(Model.Text) %>;
这种技术是更酷因为现在你可以JSON序列化整个视图模式:
var model = <%= new JavaScriptSerializer().Serialize(Model) %>;
var str = model.Text;
这应该是:
var str = '<%= ViewData["Text"] %>';
不,那是非常糟糕的。切勿在真实世界的应用程序中使用这样的东西。如果文本包含报价怎么办?这段代码很容易受到XSS攻击,特别是如果这个文本来自用户输入。 – 2011-05-02 22:21:33
他已经很接近了,我认为回答他的问题比让问题复杂化更有帮助。 – 2011-05-02 22:29:01
这不是问题的答案!这是对XSS攻击和广告不良做法的邀请。我们不是在说这里过于复杂。我们正在谈论回答这个问题。你怎么可能说这回答了这个问题?我的意思是这个代码很快就会中断,而且它还会受到关于SO的另一个问题的影响。我不能相信这个问题是有效的,你还没有删除它,所以它不会被索引,因为有人可能实际上在他的应用程序中使用它。 – 2011-05-02 22:31:49
谢谢你的深入解答先生。 – ElvisLives 2011-11-07 18:10:39