Asp.net mvc DropDownList所选值未发布到服务器ASP.NET MVC
我有一个DropDownList for,它没有将下拉列表中的选定值发布回服务器 这是ViewModelAsp.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; }
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()包装它不会有问题。但这不会解决实际问题。你建议的是一个代码增强。我将对此进行改进,因为它帮助我使代码更简洁。尽管它没有解决手头的问题,但了解它仍然很有用。