我如何输出javascript到一个视图在asp.net mvc3
How can I output javascript to a view in asp.net mvc3?
大家早上好,
我有一个javascript变量在我的视图。我一直这样做……
var skinData = null;
然后在document.ready....
$.ajax({
type: 'POST',
url: 'theme/getskins',
data: {},
contentType: 'application/json; charset=utf-8',
success: function(data){
skinData = data;
}
});
我的问题是为什么我在视图加载后这样做。我想在_viewstart。cshtml
中做这个viewPage.ViewBag.SkinInfo = new JsonResult { Data = SkinManager.GetSkins() };
我如何获取这个值并将其值输出到我的javascript变量。当我真的想在第一次旅行时把这个推给客户时,我认为我不需要再做一个请求。任何提示或建议当然是感激的。我怎样才能正确地做到这一点?我尝试了一些变化,但它显然是不工作。东西…
var skinData = @ViewBag.SkinInfo.Data;
这只是输出名称空间。有什么正确的方法吗?
欢呼,
~ck in San Diego
您将需要使用一些序列化器将您的.GetSkins()
方法结果转换为json对象。内置的JavaScriptSerializer或json.net
JavaScriptSerializer serializer = new JavaScriptSerializer();
viewPage.ViewBag.SkinInfo = serializer.Serialize(SkinManager.GetSkins());
然后在你的视图
var skinData = @Html.Raw(ViewBag.SkinInfo);
这里有一种使用Html帮助器的方法。它会将你的对象转换为json,并将其放入javascript变量中。
HtmlHelper扩展方法
public static MvcHtmlString Jsonize(this HtmlHelper helper, string variableName, object obj)
{
StringBuilder str = new StringBuilder();
str.Append("<script type='text/javascript'>");
str.Append("var ");
str.Append(variableName);
str.Append("=");
if (obj == null)
str.Append("null");
else
str.Append(JsonHelper.Serialize(obj));
str.Append(";");
str.Append("</script>");
return MvcHtmlString.Create(str.ToString());
}
json序列化器。在本例中,我使用的是DataContractJsonSerializer。
public class JsonHelper
{
public static string Serialize(object obj)
{
string json = null;
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, obj);
json = Encoding.Default.GetString(ms.ToArray());
}
return json;
}
}
一旦你完成了这些,你就可以在视图中使用它来创建一个包含对象
的javascript变量@Html.Jsonize("data", ViewBag.SkinInfo.Data);
将创建如下内容:
<script type='text/javascript'>
var data = { your serialized object };
</script>
相关文章:
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- 我该如何编写一个CouchDB视图,列出每个存储文档的大小
- 在Angular ui路由器中,如何将事件从一个视图发送到另一个视图
- 当我点击MVC视图中的图像时,如何打开另一个页面
- 需要一个与HTML5<音频>.哪些没有't创建或销毁视图
- 遍历SC.ManyArrray以创建要附加到SproutCore中的另一个视图的自定义视图
- 在Django中,可以在视图中创建一个包含js的变量,然后在循环模板标记中使用它
- ASP.NET angularjs重定向到控制器的另一个视图
- 如何在angularjs中调用局部视图所需的另一个javascript
- d3日历视图:如何将所有内容放在一个svg中,而不是放在几个svg中
- 挖空视图模型函数仅影响最后一个实例
- 在Grails中使用Asset-Pipeline Plugin制作一个视图加载特定的JavaScript
- 通过jquery将网格视图数据发送到另一个页面
- 另一个 UI 视图中的角度 UI 视图
- jquery专注于asp.net mvc部分视图中的一个文本框
- Rails-从一个视图到下一个视图的水平转换
- 从Backbone中的另一个视图调用新视图
- I'当我试图将java脚本加载到web视图中时,我得到了一个空白屏幕
- Ember eror试图注册一个id已在使用的视图
- 用javascript制作一个网格视图图像