Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 MVC视图模型>;JS ViewModel-未捕获的语法错误:意外的标记&;_Asp.net Mvc 3_Knockout.js - Fatal编程技术网

Asp.net mvc 3 MVC视图模型>;JS ViewModel-未捕获的语法错误:意外的标记&;

Asp.net mvc 3 MVC视图模型>;JS ViewModel-未捕获的语法错误:意外的标记&;,asp.net-mvc-3,knockout.js,Asp.net Mvc 3,Knockout.js,当我试图在clientside viewmodel(对于knockout.js)中传递我的服务器端viewmodel时,出现了一个js错误“uncaughtsyntaxerror:Unexpected token&” 视图模型 public class InvoiceViewModel { public Factuur Factuur { get; set; } public List<Factuurlijn> Factuurlijnen { get;

当我试图在clientside viewmodel(对于knockout.js)中传递我的服务器端viewmodel时,出现了一个js错误“uncaughtsyntaxerror:Unexpected token&”

视图模型

public class InvoiceViewModel
{
        public Factuur Factuur { get; set; }
        public List<Factuurlijn> Factuurlijnen { get; set; }
}
但是没有成功。。。然后我在我的js错误中看到了这一点

错误:无效的属性id

var initialDataJS = {&quot;Factuur&quot;:{&quot;factuur_id&quot;:0,&quot;factuur_nummervoorvoegsel&quot;:&quot;2012&quot;,&quot;factuur_nummer&quot;:1,&quot;factuur_type&quot;:&quot;F&quot;,&quot;bedrijf_id&quot;:0,&quot;factuur_naam&quot;:null,&quot;factuur_notities&quot;:null,&quot;factuur_details&quot;:null,&quot;factuur_datum&quot;:&quot;\/Date(1335443889648)\/&quot;,&quot;factuur_vervaldatum&quot;:&quot;\/Date(1336307889648)\/&quot;,&quot;factuur_kortingspercentage&quot;:0,&quot;factuur_betaald&quot;:false,&quot;factuur_bedrijf_naam&quot;:null,&quot;factuur_bedrijf_adres&quot;:null,&quot;factuur_bedrijf_postcode&quot;:null,&quot;factuur_bedrijf_gemeente&quot;:null,&quot;factuur_bedrijf_land&quot;:null,&quot;factuur_bedrijf_tel&quot;:null,&quot;factuur_bedrijf_fax&quot;:null,&quot;factuur_bedrijf_gsm&quot;:null,&quot;factuur_bedrijf_email&quot;:null,&quot;factuur_bedrijf_website&quot;:null,&quot;factuur_bedrijf_btw&quot;:null,&quot;factuur_deleted&quot;:false,&quot;bedrijf&quot;:null,&quot;bedrijfReference&quot;:{&quot;Value&quot;:null,&quot;EntityKey&quot;:null,&quot;RelationshipName&quot;:&quot;ScotaModel.facturen_ibfk_1&quot;,&quot;SourceRoleName&quot;:&quot;facturen&quot;,&quot;TargetRoleName&quot;:&quot;Bedrijf&quot;,&quot;RelationshipSet&quot;:null,&quot;IsLoaded&quot;:false},&quot;factuurlijnen&quot;:[],&quot;EntityState&quot;:1,&quot;EntityKey&quot;:null},&quot;Factuurlijnen&quot;:[{&quot;factuurlijn_id&quot;:0,&quot;factuur_id&quot;:0,&quot;factuurlijn_item&quot;:&quot;&quot;,&quot;factuurlijn_aantal&quot;:0,&quot;factuurlijn_prijs&quot;:0,&quot;factuurlijn_btwbedrag&quot;:0,&quot;factuurlijn_btwpercentage&quot;:0,&quot;factuurlijn_datum&quot;:&quot;\/Date(-62135596800000)\/&quot;,&quot;factuurlijn_volgorde&quot;:null,&quot;factuurlijn_deleted&quot;:false,&quot;facturen&quot;:null,&quot;facturenReference&quot;:{&quot;Value&quot;:null,&quot;EntityKey&quot;:null,&quot;RelationshipName&quot;:&quot;ScotaModel.factuurlijnen_ibfk_1&quot;,&quot;SourceRoleName&quot;:&quot;factuurlijnen&quot;,&quot;TargetRoleName&quot;:&quot;facturen&quot;,&quot;RelationshipSet&quot;:null,&quot;IsLoaded&quot;:false},&quot;EntityState&quot;:1,&quot;EntityKey&quot;:null}]}
有人能帮我吗?

换衣服

var initialDataJS = @(initialData)

来自菲尔·哈克


Razor正在尝试安全地编码所有这些引号,但实际上Javascript需要它们。

您需要替换引号字符。我就是这么做的

    var jsonStr = '@(Model.JSONData)';
    var json = JSON.parse(jsonStr.replace(/&quot;/g, '"'));

    viewModel = new JsModel(json);
    ko.applyBindings(viewModel);

所以在本例中,您将服务器中的数据保存为jsonStr变量中的字符串,然后在regEx的帮助下替换双引号并对其进行解析。这将创建一个json对象

我想我在填充模型时犯了一个错误。invoicelines必须直接位于invoice对象下方,而不是单独的。但现在我看到“序列化对象X.Models.Factuur时检测到循环引用”嗯,不太好。无法序列化使用EF自动创建的对象,因为定义一对多关系时,单侧对象包含所有多侧对象的集合,同时多侧对象中的每个对象都有一个指向其相关单侧对象的指针。这将创建一个循环引用父对象->集合->子对象->父对象。无法序列化包含循环引用的对象图。为了使序列化工作,对象图必须是树。一般来说,这对于传递给视图的所有对象都是一个很好的实践。您是否找到了问题的解决方案?
var initialDataJS = {&quot;Factuur&quot;:{&quot;factuur_id&quot;:0,&quot;factuur_nummervoorvoegsel&quot;:&quot;2012&quot;,&quot;factuur_nummer&quot;:1,&quot;factuur_type&quot;:&quot;F&quot;,&quot;bedrijf_id&quot;:0,&quot;factuur_naam&quot;:null,&quot;factuur_notities&quot;:null,&quot;factuur_details&quot;:null,&quot;factuur_datum&quot;:&quot;\/Date(1335443889648)\/&quot;,&quot;factuur_vervaldatum&quot;:&quot;\/Date(1336307889648)\/&quot;,&quot;factuur_kortingspercentage&quot;:0,&quot;factuur_betaald&quot;:false,&quot;factuur_bedrijf_naam&quot;:null,&quot;factuur_bedrijf_adres&quot;:null,&quot;factuur_bedrijf_postcode&quot;:null,&quot;factuur_bedrijf_gemeente&quot;:null,&quot;factuur_bedrijf_land&quot;:null,&quot;factuur_bedrijf_tel&quot;:null,&quot;factuur_bedrijf_fax&quot;:null,&quot;factuur_bedrijf_gsm&quot;:null,&quot;factuur_bedrijf_email&quot;:null,&quot;factuur_bedrijf_website&quot;:null,&quot;factuur_bedrijf_btw&quot;:null,&quot;factuur_deleted&quot;:false,&quot;bedrijf&quot;:null,&quot;bedrijfReference&quot;:{&quot;Value&quot;:null,&quot;EntityKey&quot;:null,&quot;RelationshipName&quot;:&quot;ScotaModel.facturen_ibfk_1&quot;,&quot;SourceRoleName&quot;:&quot;facturen&quot;,&quot;TargetRoleName&quot;:&quot;Bedrijf&quot;,&quot;RelationshipSet&quot;:null,&quot;IsLoaded&quot;:false},&quot;factuurlijnen&quot;:[],&quot;EntityState&quot;:1,&quot;EntityKey&quot;:null},&quot;Factuurlijnen&quot;:[{&quot;factuurlijn_id&quot;:0,&quot;factuur_id&quot;:0,&quot;factuurlijn_item&quot;:&quot;&quot;,&quot;factuurlijn_aantal&quot;:0,&quot;factuurlijn_prijs&quot;:0,&quot;factuurlijn_btwbedrag&quot;:0,&quot;factuurlijn_btwpercentage&quot;:0,&quot;factuurlijn_datum&quot;:&quot;\/Date(-62135596800000)\/&quot;,&quot;factuurlijn_volgorde&quot;:null,&quot;factuurlijn_deleted&quot;:false,&quot;facturen&quot;:null,&quot;facturenReference&quot;:{&quot;Value&quot;:null,&quot;EntityKey&quot;:null,&quot;RelationshipName&quot;:&quot;ScotaModel.factuurlijnen_ibfk_1&quot;,&quot;SourceRoleName&quot;:&quot;factuurlijnen&quot;,&quot;TargetRoleName&quot;:&quot;facturen&quot;,&quot;RelationshipSet&quot;:null,&quot;IsLoaded&quot;:false},&quot;EntityState&quot;:1,&quot;EntityKey&quot;:null}]}
var initialDataJS = @(initialData)
var initialDataJS = @Html.Raw(initialData)
    var jsonStr = '@(Model.JSONData)';
    var json = JSON.parse(jsonStr.replace(/&quot;/g, '"'));

    viewModel = new JsModel(json);
    ko.applyBindings(viewModel);