在POST上不会创建新记录

时间:2013-09-30 18:15:26

标签: c# asp.net-mvc-3 orchardcms orchardcms-1.6 orchardcms-1.7

使用MVC Orchard服务文件允许用户在'HoursWorkedToday'表中输入新记录,允许用户输入他们当天工作的小时数。

//HoursWorkedService
public class HoursWorkedService : IHoursWorkedService
    {
        private IRepository<HoursWorkedPerDay> _repository = null;

        public HoursWorkedService(IRepository<HoursWorkedPerDay> Repository)
        {
            _repository = Repository;
        }

        public Models.HoursWorkedPerDay Create(HoursWorkedPerDay newRecordForHoursWorked)
        {
            _repository.Create(newRecordForHoursWorked);

            return newRecordForHoursWorked;
        }

//IHoursWorkedService
 public interface IHoursWorkedService : IDependency
    {
        HoursWorkedPerDay Create(HoursWorkedPerDay newRecordForHoursWorked);
    }

//controller
[HttpPost, ActionName("HoursWorkedPerDay")]
        public ActionResult HoursWorkedPerDayPOST(int userId, int hours)
        {  
            DateTime TodaysDate = DateTime.UtcNow;

            HoursWorkedPerDay HoursPerDay = new HoursWorkedPerDay();
            HoursPerDay.Date = TodaysDate;
            HoursPerDay.WorkerRecord_Id = userId;
            HoursPerDay.HoursWorked = hours;

            _hoursWorked.Create(HoursPerDay);

            _notifier.Add(NotifyType.Information, T("Thank you, Hours Added."));

            return RedirectToAction("Index");
        }

但在帖子后我得到'网站无法显示'

LOGS显示:

无法将值NULL插入列'Id',表'Orchard.Timekeeper.dbo.Timekeeper_HoursWorkedPerDay';列不允许空值。 INSERT失败

在我的迁移文件中,我将'id'设置为.ContentPartRecord(),我假设在使用该服务时自动创建了下一条记录

1 个答案:

答案 0 :(得分:0)

不要在不是内容部分记录的内容上使用ContentPartRecord。而是自己添加Id列作为标识,以便它自动递增。 如果它是作为内容部分记录,则永远不要在没有内容项的情况下使用它。特别是,永远不要直接在部分记录上使用存储库,而是通过内容管理器。