私はJSエラー "キャッチされないでSyntaxError:予期しないトークン&" を持って、私は(knockout.js用)クライアント側のviewmodelに私のサーバーサイドのviewmodelを渡すしようとすると、MVCのViewModel> JSのViewModel - キャッチされないでSyntaxError:予期しないトークン&
ViewModelに
public class InvoiceViewModel
{
public Factuur Factuur { get; set; }
public List<Factuurlijn> Factuurlijnen { get; set; }
}
コントローラ
//Create Viewmodel
InvoiceViewModel ivm = new InvoiceViewModel();
//Initialize vm objects
int aantaldagentotvervaldatum = Convert.ToInt32(General.getParameter("defaultaantaldagentotvervaldatum"));
Factuur i = new Factuur { factuur_nummer = 1, factuur_nummervoorvoegsel = DateTime.Now.Year.ToString(), factuur_datum = DateTime.Now, factuur_type = Ftype, factuur_vervaldatum = DateTime.Now.AddDays(aantaldagentotvervaldatum), factuur_kortingspercentage = Convert.ToDecimal(General.getParameter("defaultkortingspercentage")) };
List<Factuurlijn> FLijnen = new List<Factuurlijn>{new Factuurlijn(){ factuurlijn_aantal = 0, factuurlijn_item="", factuurlijn_prijs=0 }};
// add objects to viewmodel
ivm.Factuur = i;
ivm.Factuurlijnen = FLijnen;
return View(ivm);
ビュー
@{
//prepare viewmodel to assign to pas into js
string initialData = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model);
}
...
<script type="text/javascript">
var initialDataJS = @(initialData)
alert('initialdata : ' + initialDataJS);
</script>
私のアラートは発生せず、エラーが発生します。クロム://firebug/content/net/requestObserver.js Chromeで
:キャッチされないでSyntaxErrorクリアスコープ Bronbestandに行くコンパイルとスクリプトを実行するの試み:FFで
:私はalread予期しないトークン&
私はJSの変数に代入しようとする前に、それはのviewmodelのシリアライズにうまくいかない気持ちを持っていますが、私は理由を理解していない...
無効なプロパティID
var initialDataJS = {"Factuur":{"factuur_id":0,"factuur_nummervoorvoegsel":"2012","factuur_nummer":1,"factuur_type":"F","bedrijf_id":0,"factuur_naam":null,"factuur_notities":null,"factuur_details":null,"factuur_datum":"\/Date(1335443889648)\/","factuur_vervaldatum":"\/Date(1336307889648)\/","factuur_kortingspercentage":0,"factuur_betaald":false,"factuur_bedrijf_naam":null,"factuur_bedrijf_adres":null,"factuur_bedrijf_postcode":null,"factuur_bedrijf_gemeente":null,"factuur_bedrijf_land":null,"factuur_bedrijf_tel":null,"factuur_bedrijf_fax":null,"factuur_bedrijf_gsm":null,"factuur_bedrijf_email":null,"factuur_bedrijf_website":null,"factuur_bedrijf_btw":null,"factuur_deleted":false,"bedrijf":null,"bedrijfReference":{"Value":null,"EntityKey":null,"RelationshipName":"ScotaModel.facturen_ibfk_1","SourceRoleName":"facturen","TargetRoleName":"Bedrijf","RelationshipSet":null,"IsLoaded":false},"factuurlijnen":[],"EntityState":1,"EntityKey":null},"Factuurlijnen":[{"factuurlijn_id":0,"factuur_id":0,"factuurlijn_item":"","factuurlijn_aantal":0,"factuurlijn_prijs":0,"factuurlijn_btwbedrag":0,"factuurlijn_btwpercentage":0,"factuurlijn_datum":"\/Date(-62135596800000)\/","factuurlijn_volgorde":null,"factuurlijn_deleted":false,"facturen":null,"facturenReference":{"Value":null,"EntityKey":null,"RelationshipName":"ScotaModel.factuurlijnen_ibfk_1","SourceRoleName":"factuurlijnen","TargetRoleName":"facturen","RelationshipSet":null,"IsLoaded":false},"EntityState":1,"EntityKey":null}]}
誰かが私を助けることができる:yは
string initialData = Json.Encode(Model);
が、ノー成功を試してみました...それから私はエラーが
エラー私のjsの中でこれを見ましたか?
私は自分のモデルを埋めるのに間違いを犯したと思います。 invoicelinesは別々の代わりにインボイスオブジェクトの下に直接行かなければならなかった。今は "循環参照がオブジェクトX.Models.Factuurをシリアル化している間に検出されました" – tortuga
うーん、良くない。 1対多リレーションが定義されている場合、片側オブジェクトにはすべての多くのサイドオブジェクトのコレクションが含まれていると同時に、多くのサイドオブジェクトにはそれぞれ関連する片側オブジェクトへのポインタがあるため、EFで自動的に作成されたオブジェクトはシリアル化できません。これは、循環参照父 - >コレクション - >息子オブジェクト - >父を作成します。 循環参照を含むオブジェクトグラフをシリアル化することはできません。シリアル化が機能するためには、オブジェクトグラフはツリーでなければなりません。これは一般的に、ビューに渡されるすべてのオブジェクトのための良い習慣です。 – tortuga
あなたの問題の解決策を見つけたことがありますか? –