c#类到knockout.js的映射
我想将我的类中的每个对象转换为observablearray 我的模型是这样的:c#类到knockout.js的映射,c#,javascript,knockout.js,C#,Javascript,Knockout.js,我想将我的类中的每个对象转换为observablearray 我的模型是这样的: public class Project { public string Soid { get; set; } public DateTime StartDate { get; set; } public DateTime? EndDate { get; set; } public string ProjectTitle { get; set;
public class Project
{
public string Soid { get; set; }
public DateTime StartDate { get; set; }
public DateTime? EndDate { get; set; }
public string ProjectTitle { get; set; }
private List<SelectedMembersForTestimonialsModel> _selectedMembersForProject;
public List<SelectedMembersForTestimonialsModel> SelectedMembersForProject
{
internal set { _selectedMembersForProject = value; }
get { return _selectedMembersForProject ?? (_selectedMembersForProject = new List<SelectedMembersForTestimonialsModel>()); }
}
}
var RatingAndTestimonials = function () {
//Make the self as 'this' reference
var self = this;
self.projects = ko.observableArray([]);
Load Data from server to self.projects
//Function to Read All Modules datas
function GetRatingandTestimonialsData(module) {
$.ajax({
type: "POST",
url: "Home.aspx/GetRatingandTestimonialsInfos",
data: "{module : '" + module + "'}",
dataType: "json",
contentType: "application/json",
success: function (response) {
self.PageLoading = ko.observable("none");
$.each(response.d, function (i, data) {
self.projects(data.Projects);
});
}
});
}
要将每个属性从project转换为observablearry,(特别嵌套的列表称为:SelectedMembersForProject)
我使用ko.mapping编写了以下内容
var rt = new RatingAndTestimonials();
ko.applyBindings(ko.mapping.fromJS(rt));
但它不起作用,有人能解决我的问题吗?虽然您还没有说到底出了什么问题,但您没有将每个项目添加到视图模型的数组中,而是将属性设置为该项目。您需要使用推送将每个项目添加到阵列中:
$.each(response.d, function (i, data) {
self.projects.push(data.Projects);
});
对于我正在处理的屏幕,我首先将模型传递到我的.cshtml视图,因此:
@model Your.Namespace.Project
然后,在.cshtml视图的
中
// serialize model to json
var data = @Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model));
// "Project" being the name of the knockout VM
var vm = new Project(data);
ko.applyBindings(vm);
// definition of project knockout VM
function Project(data) {
// Data
var self = this;
ko.mapping.fromJS(data, {}, self);
}
现在,您的所有属性都是可观察的,并且您的列表是可观察的阵列您在服务器端使用的是什么技术(Mvc4带控制器、ApiController、WCF、自制处理程序)?你能发布服务器响应流吗?当然,我正在使用C#webmethod,它由$ajax方法调用(图像是否回答了你的问题?)Paul,我只想使用ko.mapping将嵌套列表转换为Observable。你似乎没有调用ajax服务来获取数据,因此映射插件没有任何数据要映射。