【问题标题】:Why wont my DropDownListFor populate my id property when I POST?为什么我的 DropDownListFor 在发布时不会填充我的 id 属性?
【发布时间】:2016-06-12 22:28:31
【问题描述】:

我有一个DropDownListFor,它为我显示Events 的列表。我正在尝试POST 退回所选event 的ID。 EventId 总是以 0 的形式返回。 (请忽略没有服务层或存储库的混乱,这只是一个示例项目。)

我的模特:

public List<SelectListItem> Events { get; set; }

public int EventId { get; set; }

我的看法:

 @Html.DropDownListFor(m=> m.EventId, Model.Events, new { @class = "form-control" })

这是我在控制器中填充Events 的方式:

[HttpGet]
public ActionResult Create()
{
    //Setting up Events for the DropDownListFor
    var events = db.Events.ToList().Select(e => new SelectListItem
    {
        Text = e.EventName,
        Value = e.EventId.ToString()
    }).ToList();

    return View(new User {Events = events });
}

在我的POST:

  [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "UserId,FirstName,LastName,Age,VehicleMake,VehicleModel,VehicleYear,AreGuestsAttending,TotalGuests")] User user)
    {
        if (ModelState.IsValid)
        {
            db.Users.Add(user);
            db.SaveChanges();

            var enrollUserForEvent = new Enrollment
            {
                UserId = user.UserId,
                EventId = user.EventId
            };

            _enrollmentController.Create(enrollUserForEvent);

            return RedirectToAction("Index", "Event");
        }

        return View(user);
    }

我尝试过几种不同的东西,例如:

  var eventIdString = user.Events.First(e => e.Selected == true).Value;
  int eventId = Int32.Parse(eventIdString);

但在上述场景中user.Events 是null。

在玩耍和搜索之后,我找不到任何关于我在这里可能做错的事情。其他所有内容都可以正常发布,所以我不确定为什么我没有让EventId 与其他所有内容一起返回。任何帮助将不胜感激!

【问题讨论】:

    标签: c# model-view-controller razor


    【解决方案1】:

    问题来了

    Bind(Include ="...")
    

    您还应该在其中包含EventId。如果 EventId 错过了这个,user 的 EventId 属性将获得它的默认值,即 0。也包括这个到你的 Bind 语句,然后当 user 模型将被创建时将采用该值EventId 来自您发布的数据和您发布的值将被正确设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-05
      • 2016-05-01
      • 1970-01-01
      • 2015-05-19
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多