ModelState错误c#mvc5

时间:2018-05-10 09:45:05

标签: c# asp.net-mvc-5 entity-framework-6

在执行HttpPost的操作结果中,我从EF

收到错误

“ModelState.Errors表达式求值程序中的内部错误”

我在View中的模型是OrdineOmaggio

 public partial class OrdineOmaggio
{
    public int Id { get; set; }
    public string Id_Gioielleria { get; set; }
    public System.DateTime Data_Ordine { get; set; } 
    public virtual Consumatore MD_CONSUMATORE { get; set; }
    public virtual Omaggio MD_OMAGGIO { get; set; }
    public virtual CodiceRandomConsumatore MD_RANDOM_CONSUMATORE { get; set; }
}

我的行动是如此

public async Task<ActionResult> ChooseGift(
            [Bind(Include ="Data_Ordine,MD_RANDOM_CONSUMATORE,MD_OMAGGIO,Id_Gioielleria")]
            OrdineOmaggio ordineOmaggio,
            string codiceOmaggio, string codice)
        {
            var randomConsumatore = _context.CodiciRandomConsumatori
                .SingleOrDefault(c => c.Codice == codice) ??
                                    new CodiceRandomConsumatore
                                    {
                                        Id = -1,
                                        Codice = "",
                                        Assegnato = null,
                                        Distinzione = ""
                                    };

            var consumatore = _context.CodiciRandomConsumatori
                .Where(c => c.Codice == codice)
                .Select(c => c.MD_CONSUMATORE)
                .SingleOrDefault();

            var omaggio = _context.Omaggi
                .SingleOrDefault(c => c.CodiceOmaggio == codiceOmaggio);

            if (ModelState.IsValid)
            {
                ordineOmaggio.Data_Ordine = DateTime.Now;
                ordineOmaggio.Id_Gioielleria = ordineOmaggio.Id_Gioielleria; 
                ordineOmaggio.MD_CONSUMATORE = consumatore; // FK
                ordineOmaggio.MD_OMAGGIO = omaggio; // FK
                ordineOmaggio.MD_RANDOM_CONSUMATORE = randomConsumatore; // FK

                _context.OrdiniOmaggio.Add(ordineOmaggio);

                randomConsumatore.Assegnato = true;

                _context.SaveChanges();
                return RedirectToAction("Success");
            }
            return View(ordineOmaggio);
        }

错误与dataAnnotation有关:它表示并非所有字段都填充

元数据是

 public class OrdineOmaggioMetadata
{
    [Required(ErrorMessage = "Scegli la gioiellereia.")]
    public string Id_Gioielleria;

    [Required(ErrorMessage = "Seleziona una foto.")]
    public Omaggio MD_OMAGGIO;

    ...
}

在我看来,我放置了

@Html.HiddenFor(m=> m.MD_OMAGGIO.CodiceOmaggio)
 @Html.ValidationMessageFor(m => m.MD_OMAGGIO.CodiceOmaggio)

但是这个助手将null传递给ActionResult

MD_OMAGGIO是产品代码的表外键。

我错了什么?

0 个答案:

没有答案