asp.net-mvc - DropDownList 选定的值未发布到服务器 ASP.NET MVC

标签 asp.net-mvc

我有一个 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/

相关文章:

asp.net - 通过向其添加 ASP.NET MVC 元素来改进/丰富 WebForms 应用程序的想法

c# - 自定义 .config 文件中无法识别的属性 'xmlns'

asp.net-mvc - Entity Framework 不返回相关对象

asp.net-mvc - 使用 ASP.NET MVC 将多个 View 返回到一个 ActionResult

asp.net-mvc - X-SourceFiles header 有什么作用?

asp.net-mvc - 在 Web API c# MVC 中使用 HttpActionExecutedContext 时出现缓存问题

asp.net-mvc - MVC5 基于声明的身份验证 - 合适的声明项

asp.net-mvc - WCF Web Api 作为 asp.net mvc 3 应用程序的子域?

javascript - 刷新 View 以应用新选择的主题

asp.net-mvc - Entity Framework 6.0 代码优先迁移到 Azure SQL DB 不起作用。