Asp.net mvc DropDownList所选值未发布到服务器ASP.NET MVC

Asp.net mvc DropDownList所选值未发布到服务器ASP.NET MVC,asp.net-mvc,Asp.net Mvc,我有一个DropDownList for,它没有将下拉列表中的选定值发布回服务器 这是ViewModel public class DonationViewModel { public int Id { get; set; } public int AttendeeId { get; set; } public int EventId { get; set; } public string EventName { get; set; }

我有一个DropDownList for,它没有将下拉列表中的选定值发布回服务器

这是ViewModel

 public class DonationViewModel
{

    public int Id { get; set; }       
    public int AttendeeId { get; set; }
    public int EventId { get; set; }

    public string EventName { get; set; }

    [Display(Name = "Address Line 1")]
    [RequiredIfTrue("GiftAid")]
    public string Address1 { get; set; }
    [Display(Name = "Address Line 2")]
    public string Address2 { get; set; }
    [Display(Name = "City/Town")]
    [RequiredIfTrue("GiftAid")]
    public string City { get; set; }
    [Display(Name = "Post Code")]
    [RequiredIfTrue("GiftAid")]
    public string PostCode { get; set; }
    [Display(Name = "Gift Aid")]
    public bool GiftAid { get; set; }
    public decimal Amount { get; set; }
    [Display(Name = "Donation Paid?")]
    public bool Paid { get; set; }
    [Display(Name = "Payment Method")]
    public PaymentMethod? PaymentMethod { get; set; }
    [Display(Name = "Date Donation Paid")]
    public DateTime? DatePaid { get; set; }

    public IEnumerable<SelectListItem> Attendees { get; set; } 
}
这是视图代码

<div class="form-group">
        @Html.LabelFor(model => model.Attendees, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownListFor(model => model.AttendeeId, new SelectList(Model.Attendees, "Value", "Text"), "Please Select an Attendee")
            @Html.ValidationMessageFor(model => model.Address1)
        </div>
    </div>

@LabelFor(model=>model.attendes,新的{@class=“controllabel col-md-2”})
@Html.DropDownListFor(model=>model.AttendeeId,新选择列表(model.Attendes,“值”,“文本”),“请选择一名与会者”)
@Html.ValidationMessageFor(model=>model.Address1)
AttendeeId
发回时始终为0,而不是所选值

请重试

@Html.DropDownListFor(model => model.AttendeeId, new SelectList(Model.Attendees, "Text", "Value", Model.AttendeeId ))
试一试


您不需要使用
SelectList
来包装它,方法将
IEnumerable
作为参数,并且您已经拥有了它:

@Html.DropDownListFor(model => model.AttendeeId, Model.Attendees, "Please Select an Attendee")

您不需要使用
SelectList
来包装它,方法将
IEnumerable
作为参数,并且您已经拥有了它:

@Html.DropDownListFor(model => model.AttendeeId, Model.Attendees, "Please Select an Attendee")

我几乎不好意思地说页面上有一个隐藏的AttendeeId字段,它被赋予了正确的值。这意味着AttendeeId有两个值被发布回服务器,但是模型绑定器使用第二个空值绑定到视图模型


因此,对我来说,最重要的是,始终检查帖子以及绑定到模型的内容……

我几乎不好意思地说,页面上有一个隐藏的AttendeID字段,该字段被分配了正确的值。这意味着AttendeeId有两个值被发布回服务器,但是模型绑定器使用第二个空值绑定到视图模型


因此,对我来说,最重要的是,始终检查帖子以及绑定到模型的内容……

用SelectList()包装它不会有问题。但这并不能解决实际问题。您建议的是代码增强。我将对此进行改进,因为它帮助我使代码更加简洁。虽然它没有解决当前的问题,但知道它仍然很有用。用SelectList()包装它不会有问题。但这不会解决实际问题。你建议的是一个代码增强。我将对此进行改进,因为它帮助我使代码更简洁。尽管它没有解决手头的问题,但了解它仍然很有用。