Orchardcms Orchard内容类型为空

Orchardcms Orchard内容类型为空,orchardcms,Orchardcms,我是orchard模块开发的新手。当我试图保存数据时,我创建了一个模块。 我使用此代码保存数据 public ActionResult Create(FormCollection input) { var product = contentManager.New<ProductPart>("Product"); product.EmployeeName = input["EmployeeName"]; product.E

我是orchard模块开发的新手。当我试图保存数据时,我创建了一个模块。 我使用此代码保存数据

    public ActionResult Create(FormCollection input)
    {
        var product = contentManager.New<ProductPart>("Product");
        product.EmployeeName = input["EmployeeName"];
        product.EmployeeFathersName = input["EmployeeFathersName"];
        product.DOB = Convert.ToDateTime(input["DOB"]);
        product.Email = input["Email"];
        product.Address = input["Address"];
        product.JoiningDate = Convert.ToDateTime(input["JoiningDate"]);

        if (!ModelState.IsValid)
        {
            return View(product);
        }

        contentManager.Create(product);

        return RedirectToAction("Index");
    }
公共操作结果创建(FormCollection输入) { var product=contentManager.New(“产品”); product.EmployeeName=输入[“EmployeeName”]; product.EmployeeFathersName=输入[“EmployeeFathersName”]; product.DOB=Convert.ToDateTime(输入[“DOB”]); product.Email=输入[“Email”]; product.Address=输入[“地址”]; product.JoiningDate=Convert.ToDateTime(输入[“JoiningDate”]); 如果(!ModelState.IsValid) { 返回视图(产品); } 创建(产品); 返回操作(“索引”); } 我在模型中使用的这个类

public class ProductRecord:ContentPartRecord
{
    public virtual string EmployeeName { get; set; }

    public virtual string EmployeeFathersName { get; set; }
    public virtual DateTime DOB { get; set; }
    public virtual string Email { get; set; }
    public virtual string Address { get; set; }
    public virtual DateTime JoiningDate { get; set; }
}

public class ProductPart : ContentPart<ProductRecord>
{
    /*
    public int Id
    {
        get { return Record.Id; }
        set{Record.Id = value;}
    }
    */

    [Required]
    public string EmployeeName
    {
        get { return Record.EmployeeName; }
        set { Record.EmployeeName = value; }
    }

    [Required]
    public string EmployeeFathersName
    {
        get { return Record.EmployeeFathersName; }
        set { Record.EmployeeFathersName = value; }
    }

    [Required]
    public DateTime DOB
    {
        get { return Record.DOB; }
        set { Record.DOB = value; }
    }
    [Required]
    public string Email 
    {
        get { return Record.Email; }
        set { Record.Email = value; }
    }
    [Required]
    public string Address 
    {
        get { return Record.Address; }
        set { Record.Address = value; }
    }
    [Required]
    public DateTime JoiningDate 
    {
        get { return Record.JoiningDate;}
        set { Record.JoiningDate = value; }
     }

}
公共类ProductRecord:ContentPartRecord
{
公共虚拟字符串EmployeeName{get;set;}
公共虚拟字符串EmployeeFatherName{get;set;}
公共虚拟日期时间DOB{get;set;}
公共虚拟字符串电子邮件{get;set;}
公共虚拟字符串地址{get;set;}
公共虚拟日期时间连接日期{get;set;}
}
公共类ProductPart:ContentPart
{
/*
公共整数Id
{
获取{return Record.Id;}
设置{Record.Id=value;}
}
*/
[必需]
公共字符串EmployeeName
{
获取{return Record.EmployeeName;}
设置{Record.EmployeeName=value;}
}
[必需]
公共字符串EmployeeFatherName
{
获取{return Record.EmployeeFathersName;}
设置{Record.EmployeeFathersName=value;}
}
[必需]
公共日期时间
{
获取{return Record.DOB;}
设置{Record.DOB=value;}
}
[必需]
公共字符串电子邮件
{
获取{return Record.Email;}
设置{Record.Email=value;}
}
[必需]
公共字符串地址
{
获取{返回记录.地址;}
设置{Record.Address=value;}
}
[必需]
公共日期时间连接日期
{
获取{return Record.JoiningDate;}
设置{Record.JoiningDate=value;}
}
}
我使用内容类型“Product”,但当它在belows方法中变为orchard ContentCreateExtension时

   public static T New<T>(this IContentManager manager, string contentType) where T : class, IContent {
        var contentItem = manager.New(contentType);
        if (contentItem == null)
            return null;

        var part = contentItem.Get<T>();
        if (part == null)
            throw new InvalidCastException();

        return part;
    }
public static T New(此IContentManager,字符串contentType),其中T:class,IContent{
var contentItem=manager.New(contentType);
if(contentItem==null)
返回null;
var part=contentItem.Get();
if(part==null)
抛出新的InvalidCastException();
返回部分;
}
这里,我面对的var部分为空,这意味着它的内容部分为空。

请帮助我……

您是否设置了迁移类

i、 e

您还设置了存储库吗

i、 e

公共类ProductPartHandler:ContentHandler{
public ProductPartHandler(IRepository存储库){
Filters.Add(StorageFilter.For(repository));
}

除了Nicholas的回答之外,我想提到的是,ProductPart缺少驱动程序可能会导致此类错误。请确保至少定义了空驱动程序

public class ProductPartDriver : ContentPartDriver<ProductPart> {}
公共类ProductPartDriver:ContentPartDriver{}

刚刚经历了类似的情况,请确保将处理程序类声明为public。

这一类已经让我烦恼了好几次。
public class ProductPartHandler : ContentHandler {
    public ProductPartHandler(IRepository<ProductPartRecord> repository) {
        Filters.Add(StorageFilter.For(repository));
    }
public class ProductPartDriver : ContentPartDriver<ProductPart> {}