0

浏览教程一切都很好,但数据没有保存。表已创建,编辑页面显示字段但未保存记录。单击保存按钮后,我收到此消息:

您的 Car ContentType 已创建。

未找到

您要查找的页面不存在。

任何想法?

楷模:

public class CarPart : ContentPart<CarPartRecord> {
    public string Name {
        get { return Record.Name; }
        set { Record.Name = value; }
    }
    public string Description {
        get { return Record.Description; }
        set { Record.Description = value; }
    }
    public bool IsPublished {
        get { return Record.IsPublished; }
        set { Record.IsPublished = value; }
    }
}
public class CarPartRecord : ContentPartRecord {
    public virtual string Name { get; set; }
    public virtual string Description { get; set; }
    public virtual bool IsPublished { get; set; }
}

处理程序:

public class CarPartHandler : ContentHandler {
    public CarPartHandler(IRepository<CarPartRecord> repository) {
        Filters.Add(StorageFilter.For(repository));
    }
}

驱动程序:

public class CarPartDriver : ContentPartDriver<CarPart> {
    protected override string Prefix { get { return "Car"; } }
    protected override DriverResult Editor(CarPart part, dynamic shapeHelper) {
        return ContentShape("Parts_Car_Edit", () => shapeHelper.EditorTemplate(TemplateName: "Parts/Car", Model: part, Prefix: Prefix));
    }
    protected override DriverResult Editor(CarPart part, IUpdateModel updater, dynamic shapeHelper) {
        updater.TryUpdateModel(part, Prefix, null, null);
        return Editor(part, shapeHelper);
    }
}

迁移:

public int Create(){
        SchemaBuilder.DropTable("CarPartRecord");
        SchemaBuilder.CreateTable("CarPartRecord", table => table
            .ContentPartRecord()
            .Column<string>("Name",column => column.WithLength(50).NotNull().Unique())
            .Column<string>("Description",column => column.WithLength(500))
            .Column<bool>("IsPublished",column => column.WithDefault(true).NotNull()));
        return 1;
    }
    public int UpdateFrom1() {
        ContentDefinitionManager.AlterPartDefinition("CarPart",part => part.Attachable());
        return 2;
    }

错误:

Orchard.Exceptions.DefaultExceptionPolicy - 默认 - 捕获到意外异常 http...../OrchardLocal/Admin/Contents/Create/Car NHibernate.Exceptions.GenericADOException: 无法执行批处理命令。[SQL: SQL 不可用] -- -> System.Data.SqlClient.SqlException:无法将值 NULL 插入到列“名称”、表“OrchardDB.dbo.Mega_Car_CarPartRecord”中;列不允许空值。插入失败。

NHibernate.AssertionFailure - 默认 - 发生 AssertionFailure - 这可能表明 NHibernate 或您的自定义类型中存在错误。http ..../OrchardLocal/Admin/Contents/Create/Car NHibernate.AssertionFailure:Orchard.ContentManagement.Records.ContentTypeRecord 条目中的空 id(发生异常后不要刷新会话)

Orchard.Web\Modules\M.Car\Views\EditorTemplates\Parts

@using System.Web.Mvc.Html
@model  M.Car.Models.CarPart
<fieldset>
    <legend>Car Fields</legend>
    <div class="editor-label">@Html.LabelFor(x => x.Name)</div>
    <div class="editor-field">
        @Html.EditorFor(x => x.Name)
        @Html.ValidationMessageFor(x => x.Name)
    </div>
    <div class="editor-label">@Html.LabelFor(x => x.Description)</div>
    <div class="editor-field">
        @Html.EditorFor(x => x.Description)
        @Html.ValidationMessageFor(x => x.Description)
    </div>
    <div class="editor-label">@Html.LabelFor(x => x.IsPublished)</div>
    <div class="editor-field">
        @Html.EditorFor(x => x.IsPublished)
        @Html.ValidationMessageFor(x => x.IsPublished)
    </div>
</fieldset>
4

0 回答 0