viewbag对象传递给javascript
viewbag object pass to javascript
我正试图通过viewbag将对象传递给视图,并将其传递给视图中的javascript参数但当要将对象分配给脚本值时,看起来字符串就像它的名称空间
在控制器中:
public ACCIDENT_REPORTS getFilledReportWithEntitiesById(int accidentReport_id)
{
ACCIDENT_REPORTS report = new ACCIDENT_REPORTS();
report = context.ACCIDENT_REPORTS.Include("ACCR_ENTITIES").Where(a => a.ID == accidentReport_id).FirstOrDefault();
return report;
}
ViewBag.Report = DatabaseContext.Current.AccidentReportingRepository.getFilledReportWithEntitiesById(id); //its okey, all data in viewbag
视图中:
<script>
debugger
var data = '@ViewBag.Report';
</script>
// in debugger value looks like; var data = 'Application.Database.ACCIDENT_REPORTS;
为什么它看起来像绳子?如何将viewbag的内容传递给javascript值
这是我的实体对象返回类型:
public partial class ACCIDENT_REPORTS
{
public ACCIDENT_REPORTS()
{
this.ACCR_ENTITIES = new HashSet<ACCR_ENTITIES>();
}
public decimal ID { get; set; }
public decimal FACILITY_ID { get; set; }
public Nullable<System.DateTime> START_DATE { get; set; }
public Nullable<System.DateTime> END_DATE { get; set; }
public string TITLE { get; set; }
public Nullable<decimal> ACCIDENT_TYPE { get; set; }
public Nullable<decimal> REPORTED_UNDER { get; set; }
public Nullable<decimal> SEVESOII_STATUS { get; set; }
public Nullable<decimal> INDUSTRIAL_ACTIVITY { get; set; }
public string REASON_FOR_REPORTING { get; set; }
public string ACCIDENT_DESCRIPTION { get; set; }
public string SITE_DESCRIPTION { get; set; }
public string UNIT_DESCRIPTION { get; set; }
public string CAUSES_OF_ACCIDENT { get; set; }
public string CONSEQUENCES { get; set; }
public string EMERGENCY_RESPONSE { get; set; }
public string LESSONS_LEARNED { get; set; }
public string ACCIDENTS_INVOLVING { get; set; }
public Nullable<decimal> REPORT_STATUS { get; set; }
public virtual ICollection<ACCR_ENTITIES> ACCR_ENTITIES { get; set; }
}
}
getFilledReportWithEntitiesById()
返回的类型是什么?
大概是Application.Database.ACCIDENT
。视图引擎所做的只是根据给定的内容调用.ToString()
。.ToString()
在任何引用类型(基本上是object
的任何子类型)上的默认实现是返回类型名称。
如果您想要类型的自定义字符串表示,则该类型需要重写.ToString()
。例如:
public override string ToString()
{
return string.Format("{0} - {1}", ID, Name);
}
如果对象具有ID
属性和Name
属性,则其字符串表示形式将是用连字符(中间有空格)分隔的值。然而,如果您想构建对象的字符串表示,则可以在该方法中完成。
相反,如果您不希望它是字符串,但希望JavaScript代码将其用作对象时,则需要将其序列化为JSON。类似这样的东西:
var data = @Json.Encode(ViewBag.Report);
(你可能需要稍微调整一下,我没有一个方便的环境来测试它。但你明白了……要将它用作JavaScript代码中的对象,需要将其序列化为JavaScript对象文字。)
这是的真实答案
@Html.Raw(Json.Encode(Model.PlaceStatistic.ToArray()))
相关文章:
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 循环遍历以数组为值的Javascript对象
- 从ajax请求中获取javascript对象
- 如何从对象的原型方法访问JavaScript对象属性
- 将XML转换为普通的旧JavaScript对象
- 通过引用传递JavaScript对象
- javascript对象操作:根据指定条件选择属性
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 如何在异步函数中使用javascript对象
- 临时Javascript对象
- 如何在ASP中为用户控件添加Javascript对象网
- 使用数组向下搜索Javascript对象
- Rails将JavaScript对象存储到Model的有效方式
- JavaScript对象不是从原型链继承的
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- SetInterval在javascript对象中表现怪异
- Javascript 对象和 this 关键字
- 如何在不知道关键字的情况下访问javascript对象值
- 在 JavaScript 对象中设置要使用的运算符的属性
- 如何搜索JavaScript对象并更改值