使用模型绑定与数组MVC ASP.NET插入值时的空列属性

时间:2014-08-05 03:18:35

标签: c# asp.net-mvc-4 razor

这是我的控制器:

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult ARCCreate(M_ARC[] arcs)
    {
        foreach (M_ARC item in arcs)
        {
            string Year = item.EmailSPDT.ToString().Split('/')[2].Split(' ')[0];
            string Month = item.EmailSPDT.ToString().Split('/')[1];
            int cek = int.Parse(Year + Month);
            ModelState.Remove("Periode");
            item.Periode = cek;
            if (ModelState.IsValid)
            {
                db.Arcs.Add(item);
            }
            else return View();
        }
        db.SaveChanges();
        return RedirectToAction("ARCIndex");
    }

这是我观点的一部分:

                <input type="text" name="arcs[0].InformasiBankDT" class="informasiBankDT" />
                    <input type="hidden" name="arcs[0].Periode" value="201408" />
                    <input type="hidden" name="arcs[0].CreateID" value="@Session["UserID"]" />
                    <input type="hidden" name="arcs[0].UpdateID" value="@Session["UserID"]" />
                    <input type="hidden" name="arcs[0].CreateDT" value="@DateTime.Now" />
                    <input type="hidden" name="arcs[0].UpdateDT" value="@DateTime.Now" />

这是我的模特:

public class M_ARC
{
    [Key]
    [Display(Name = "Periode")]
    [Required]
    public int Periode { get; set; }

    [Display(Name = "Email SPDT")]
    [Required]
    [DataType(DataType.DateTime)]
    [DisplayFormat(DataFormatString = "dd/MM/yyyy", ApplyFormatInEditMode = true)]
    public DateTime EmailSPDT { get; set; }

    [Display(Name = "Jatuh Tempo")]
    [Required]
    public DateTime JatuhTempoDT { get; set; }

    [Display(Name = "Informasi Bank")]
    [Required]
    public DateTime InformasiBankDT { get; set; }

    [Display(Name = "CreateID")]
    [Required]
    public string CreateID { get; set; }

    [Display(Name = "CreateDT")]
    [Required]
    public DateTime CreateDT { get; set; }

    [Display(Name = "UpdateID")]
    [Required]
    public string UpdateID { get; set; }

    [Display(Name = "UpdateDT")]
    [Required]
    public DateTime UpdateDT { get; set; }
}

我有这样的例外:

  

无法将值NULL插入到'Periode'列中; column不允许空值,INSERT失败,语句已终止

我必须做什么?请帮忙。三江源。

1 个答案:

答案 0 :(得分:0)

嗯,您发布的内容,您提到的错误是不可能的。 Periode是一个int,它是不可为空的。它不可能是空的......它的默认值是0。

您是否可能有多个M_ARC类并且您引用了错误的类?而另一个有一个可以为空的int Periode?