我有一个 dropdownlistFor ,它不会将下拉列表中选定的值发布回服务器。
这是 View 模型
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; }
}
这是设置模型的 Controller 操作
public virtual ActionResult Donate(int eventId)
{
var model = new DonationViewModel()
{
EventId = eventId,
EventName = _eventService.GetById(eventId).Name,
Attendees = _attendeeService.GetByEvent(eventId).Select(x=> new SelectListItem
{
Value = x.Id.ToString(),
Text = string.Format("{0} {1} ({2})", x.FirstName, x.LastName, x.Email)
})
};
return View(model);
}
这是 View 代码
<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>
AttendeeId
发回时始终为 0,而不是所选值
最佳答案
我几乎不好意思地说,页面上有一个 attendeeId 的隐藏字段,它被分配了正确的值。这意味着,AttendeeId 有两个值被发送回服务器,但模型绑定(bind)器使用第二个空值来绑定(bind)到 View 模型。
所以对我来说,总是检查 POST 以及绑定(bind)到模型的内容......
关于asp.net-mvc - DropDownList 选定的值未发布到服务器 ASP.NET MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21900114/