asp.net-mvc-3 – 将模型数据从Knockout发送回MVC 3

我是淘汰赛的新手,我很难将我的数据从Knockout恢复到我的服务器.我不断收到“没有为此对象定义的无参数构造函数”的错误.任何帮助,将不胜感激.

我的Knockout模型如下

function partSummary(item) {
            var self = this;
            self.ID = ko.observable(item.ID);
            self.serialNumber = ko.observable(item.SerialNumber);
            self.description = ko.observable(item.Description);
            self.manufacturer = ko.observable(item.Manufacturer);
            self.creationDate = ko.observable(item.DateCreated);
            self.active = ko.observable(item.IsActive);
        }

我将数据发送回服务器的代码

self.savePart = function() {
                $.ajax("/PartKO/UpdatePart",{
                    data: ko.toJSON(self.partDetails),type: "post",contentType: 'application/json',dataType: 'json'
                });
            };

我的MVC控制器是

[HttpPost]
    public JsonResult UpdatePart(PartDetail part)
    {
        var dbPart = new PartGenericAccessor();
        dbPart.ID = part.ID;
        dbPart.Load();
        dbPart.Description = part.Description;
        dbPart.IsActive = Convert.ToBoolean(part.IsActive);

        var manufacturers = ManufacturerAccessor.LoadAll<ManufacturerAccessor>();
        if (part.Manufacturer != null)
        {
            var manufacturer = (from p in manufacturers where p.Name == part.Manufacturer select p.ID).First();
            dbPart.ManufacturerID = manufacturer;
        }

        dbPart.Save();

        return Json("Success!!");
    }

而我的服务器端模型是

public class PartDetail
{
    public PartDetail(Guid id,string serial,string description,string manufacturer,DateTime created,bool isActive)
    {
        ID = id;
        SerialNumber = serial;
        Description = description;
        Manufacturer = manufacturer;
        DateCreated = created.ToShortDateString();
        IsActive = isActive.ToString(CultureInfo.InvariantCulture);

    }

    public Guid ID { get; set; }

    public string SerialNumber { get; set; }

    public string Description { get; set; }

    public string Manufacturer { get; set; }

    public string DateCreated { get; set; }

    public string IsActive { get; set; }
}

解决方法

您需要为MVC模型提供无参数构造函数

public class PartDetail
{
    public PartDetail()
    { ...  }
}

当数据从服务器返回时,MVC将使用无参数构造函数创建一个空对象,然后调用’set’方法来设置与进入的数据匹配的每个属性.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....