Tag: knockout.js

JsonConvert.DeserializeObject特殊字符未终止字符串。 预期分隔符:

出于某种原因,当我在我的淘汰模型中有一个特殊字符并将其转换为json对象时,字符串将结束特殊字符所在的位置,并且在反序列化时出现错误: $.ajax({ url: “/Admin/Forms/Convert”, type: “post”, //contentType: “application/json”, dataType: “text”, data: “modelData=” + ko.toJSON(theModel), success: function (data) { // window.open(“/Admin/Forms/DisplayClient”); var win = getFullWindow(‘/Admin/Forms/DisplayClient’); win.open(); }, error: function (xhr, status, msg) { alert(msg); } }); 当我得到这个方法: public void Convert(string modelData) { Form form = JsonConvert.DeserializeObject(modelData); } 我收到一个错误: Unterminated string. Expected delimiter: “. Path ‘Name’, line […]

获取淘汰模型中的MVC人员模型书列表(可观察数组)

在淘汰模型中获取MVC模型参数的最佳实践是什么? 1)如果只需要一个参数,可以使用以下命令设置knockout view model属性: this.firstName = @Model.FirstName; 2)如果您在模型中拥有大量属性,则可以执行以下操作: var modelData = function () { return @Html.Raw(Json.Encode(Model)); }(); 然后再用 this.firstName = modelData.FirstName; this.lastName = modelData.LastName; this.phoneNumber = modelData.PhoneNumber; etc. 3)如果你在Person模型中有一些Collection,该怎么办? 从个人模型中获取集合的最佳方法是什么? 例如,Person有FirstName,LastName,PhoneNumber等,并且有一个书籍列表 (每本书都有图块,作者和其他属性)。 我相信你可以使用这样的东西: var booksJSON = @Html.Raw(Json.Encode(Model.Books)); 然后在淘汰人模型中使用: self.books = ko.observableArray(booksJSON); 这只给了书。 但是,如果我想获得有关Person(书籍,包括FirstName,LastName,Phone和一堆属性)的所有信息,那么最好的方法是什么呢? 我可以以某种方式使用Json.Encode为整个Person模型,然后离开那里的一切,包括Person.Books或我应该将它分成多个Json.Encode-s ??

由于空视图模型,将knockout应用于填充表单而不擦除表单的数据?

我有一个脚本,通过将空视图模型应用于我的表单来初始化knockout。 当用户在表单中输入数据时,视图模型会相应更新 – 这是预期的行为。 JavaScript的 var viewModel = { myField : ko.observable(), init : function (somedata) { … ko.applyBindings(this, container); }, …more stuff… } 局部 x.MyField, new Dictionary { { “data-bind”, “value: myField, valueUpdate: ‘keyup'” } })%> 当我调用我的javascript在现有表单中应用knockout时,我的敲除视图模型中的空数据将擦除MyField的值(然后在我的输入字段中)(该视图模型是我的javascript驻留在另一个文件中的一部分)。 加载页面时,MVC确保MyField输入元素填充了先前从MyField输入的数据。 当调用init ,该字段将被viewmodels myField的值覆盖,该值为空,因为它是一个静态JavaScript文件。 我该如何解决这个问题?

如何更改asp.net mvc格式化JSON的方式?

我有这个型号 : public class Person { public string Name { get; set; } public int Age { get; set; } public List Colors { get; set; } } public class Color { public int ColorId { get; set; } public string Name { get; set; } } 和asp.net MVC的return Json(…)给了我这个: [{“Name”:”JC”,”Age”:24,”Colors”:[{“ColorId”:1,”Name”:”Red”},{“ColorId”:2,”Name”:”Blue”}]}, {“Name”:”Albert”,”Age”:29,”Colors”:[{“ColorId”:2,”Name”:”Blue”}]}] 当我尝试返回一种类型: List 但我想要这样的东西(如果可能的话): […]

SignalR:必须先启动连接,然后才能发送数据。 在.send()之前调用.start()

直到最近才开始使用SignalR,我几天前就已经开始工作,现在无法解决出错的问题。 我有我的中心: [HubName(“roleManagementHub”)] public class RoleManagementHub : GenericHub { public RoleManagementHub(ICurrentlyViewingUserService service) : base(service) { } } 这扩展了我创建的通用集线器: public class GenericHub : Hub where TEntity : class, IBusinessObject { private readonly ICurrentlyViewingUserService service; public GenericHub(ICurrentlyViewingUserService service) { this.service = service; } public void ImViewing(string id) { string colour; service.AddCurrentlyViewingUser(id, HttpContext.Current.User.Identity.Name, out colour); Clients.handleImViewingMessage(HttpContext.Current.User.Identity.Name, colour, id); […]

KnockoutJS并将单个对象绑定到viewmodel

我一直在这周围,并没有看到出现问题的地方。 也许你可以帮忙。 有多种视图模型设置: var viewModels = { emailTemplateViewModel: { subject: new ko.observable(‘dd’), emailName: new ko.observable(‘dd’), emailAddress: new ko.observable(‘dd’), body: new ko.observable(‘dd’) }, deviceSettingsViewModel: { managerName: new ko.observable(”) } } ko.applyBindings(viewModels); 我正在尝试使用从服务器返回的JSON填充其中一个视图模型(这是正确的并且格式正确)。 function LoadEmailTemplate() { $.getJSON(‘/EmailTemplate/Template’, function (data) { viewModels.emailTemplateViewModel = ko.mapping.fromJS(data); ko.applyBindings(viewModels.emailTemplateViewModel); }) } 但是,当我运行它时,我收到以下错误:“未捕获错误:您不能多次将绑定应用于同一元素。” 但是我读到的所有文档都显示了映射后发生的绑定。 如果我从LoadEmailTemplate函数中取出绑定,则运行时没有错误,但页面显示默认值’dd’,而不是那些应该从JSON响应映射的值。 该函数触发如下: Email Template 我正在尝试使用with-binding,因为电子邮件模板仅相对于页面的某个区域,例如 和属性: 我知道这是有效的,因为表单加载了首次定义viewmodel时设置的值。 看起来好像只是映射是失误的。 任何建议都会非常感激。 […]

NewtonSoft Json DeserializeObject空Guid字段

我正在使用带有HTML CSS jQuery KnockoutJs前端的ASP.NET MVC C#。 我的HTML页面上有一个模态联系表单。 我的想法是,如果我创建一个新的联系人,模式窗体会弹出空白值,包括一个空白隐藏的id字段。 如果我编辑了一个联系人,那么模式表单会弹出填充的字段,包括隐藏的id字段。 在我的控制器中,我打算这样做: public JsonResult Contact(string values) { var contact = JsonConvert.DeserializeObject(values); if (contact.Id.Equals(Guid.Empty)) { // create a new contact in the database } else { // update an existing one } } 但是,我收到一条错误消息,指出can’t convert “” to type Guid 你是如何解决这个问题的NewtonSoft Json,我看过Custom JsonConverter ,它似乎沿着正确的路线,但是我不知道该去哪里。

使用knockout js上传文件

文件上传使用knockout js无法正常工作。 我试过下面的代码,但没有工作。 请提一下我做错的地方。 这是我的文件控件和按钮。 我无法将所选文件从客户端发送到服务器。 请建议最好的方法是什么。 Upload ko.bindingHandlers.file = { init: function (element, valueAccessor) { alert(‘init’); $(element).change(function () { var file = this.files[0]; if (ko.isObservable(valueAccessor())) { valueAccessor()(file); } }); }

在尝试解析序列化的JSON字符串时处理MongoDB的ISODate()

我通过官方C#驱动程序使用MongoDB和ASP.NET MVC网站。 我有以下C#模型: public class Contact { public ObjectId Id { get; set; } public string Name { get; set; } public DateTime DateAdded { get; set; } } 从MongoDB中提取并通过MVC序列化为JSON字符串时,如下所示: { “_id” : ObjectId(“52eaad4839b60812fca4bf28”), “Name”: “Joe Blow”, “DateAdded” : ISODate(“2014-01-30T19:51:35.977Z”) } 当我尝试通过JSON.parse()将其从JSON字符串转换为浏览器上的Javascript对象时,我收到以下错误: Uncaught SyntaxError: Unexpected token I 这是因为ISODate(…)不是有效的JSON ObjectId()也不是有效的JSON,但我正在处理的方法是在JSON字符串上执行string.replace()之前在客户端上解析它。 我考虑过为ISODate()做同样的ISODate()但感觉有点过于hacky。 如果不在客户端使用正则表达式,我能做些什么吗? 也许来自MongoDB驱动程序的东西?

T4 – > C#class to Knockout View Model in Typescript

我正在寻找某种T4或类似的方式来获取C#类,并为强大类型的线路和视图模型生成数据的接口。 我发现typelite适用于接口,但我正在寻找能够处理视图模型的东西(或者除此之外) 我发现这个项目看起来很棒: JS的代码项目视图模型 但是当然它会生成javascript,并且在打字时看起来非常简单,包括枚举和inheritance等等,并使其与打字稿一起使用 有谁知道这样做的项目? 如果没有,有关如何构建这个的任何提示? 我不是T4专家,即使使用工具使Visual Studio中的T4编辑不那么糟糕,它看起来也很不可思议。 谢谢!