微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

来自对象的数据未传输到 ModelState

如何解决来自对象的数据未传输到 ModelState

我正在尝试向数据库添加一个具有“地址”属性的“生产者”对象。将地址添加到创建的对象后,我从 ModelState 收到错误,因为它收到的是 NULL,而不是来自创建的对象的地址。

为什么 ModelState 在“地址”上为 NULL,我该如何解决

类:

public class Producer
{
    [Key]
    public int Id { get; set; }

    [required(ErrorMessage = "The name is required.")]
    [MaxLength(30)]
    public string Name { get; set; }

    public int Funds { get; set; }

    [required(ErrorMessage = "The address is required.")]
    public int AddressId { get; set; }

    [required]
    public virtual Address Address { get; set; }

    public string UserId { get; set; }

    public virtual ApplicationUser User { get; set; }
}

来自控制器的方法

public ActionResult Create([Bind(Include = "Id,Name,Funds,AddressId,address")] Producer producer)
{
    Address address = db.Addresses.Find(producer.AddressId);
    producer.Address = address;
    address.IsFree = false;
    address.ProducerId = producer.Id;
    producer.Funds = 0;
    producer.UserId = User.Identity.GetUserId();

    if (ModelState.IsValid)
    {
        db.Entry(address).State = EntityState.Modified;
        db.Producers.Add(producer);
        db.SaveChanges();
        return RedirectToAction("ShowMyProducers");
    }  
    return View(producer);
}

查看:

@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Producer</h4>
        <hr />
        @Html.ValidationSummary(true,"",new { @class = "text-danger" })

        <div class="form-group">
            <label>Nume</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Name,new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Name,new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label>Adresa (creeată anterior)</label>
            <div class="col-md-10">
                **@Html.DropDownListFor(model => model.AddressId,new SelectList(ViewBag.Addresses,"Value","Text"),"selectează adresa",new { @class = "form-control" })**
                @Html.ValidationMessageFor(model => model.AddressId,new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

watch before checking if ModelState is valid

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。