当我试图在客户端视图模型(对于SyntaxError)中传递服务器端视图模型时,出现了一个js错误"Uncaught :意外令牌&“
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>我的警告没有触发,我所犯的错误;
FF中的chrome://firebug/content/net/requestObserver.js中的 :试图在已清除的作用域布朗贝看台上运行编译和运行脚本:
in Chrome : Uncaught :意外令牌&
在尝试将视图模型赋值给js变量之前,我觉得它在序列化视图模型时出错了,但我不明白为什么.
我已经试过了
string initialData = Json.Encode(Model);但没有成功..。然后我在我的js错误中看到了这个
错误:无效的属性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}]}有人能帮帮我吗?
发布于 2012-04-26 14:27:00
变化
var initialDataJS = @(initialData)至
var initialDataJS = @Html.Raw(initialData)来自菲尔·哈克http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx
剃须刀试图安全地编码所有这些引号,但你实际上需要它们作为Javascript。
发布于 2012-06-12 15:07:10
你需要替换引号字符。以下是我所做的
var jsonStr = '@(Model.JSONData)';
var json = JSON.parse(jsonStr.replace(/"/g, '"'));
viewModel = new JsModel(json);
ko.applyBindings(viewModel);因此,在本例中,您将服务器中的数据保存为jsonStr变量中的字符串,然后在regEx的帮助下替换双引号并对其进行解析。它将创建一个json对象。
https://stackoverflow.com/questions/10333658
复制相似问题