为什么有时无法在模型中检索下拉列表值

Why sometime dropdownlist value can not be retrieved in model

我有一个使用在 mvc 模型中设置的 DropDownListFor 的表单。但奇怪的是,它们的当前值有时无法在模型中检索(有时可以)。代码是,

<% using (Html.BeginForm("EditPageSubmit", "Home", FormMethod.Post))
{
<%: Html.DropDownListFor(model => model.Destination, Model.Destinations, Model.Destination)%>
...

model.Destinations= (from r in this._repository.Destinations
                                select new SelectListItem
                                {
                                    Text = r.Name,
                                    Value = SqlFunctions.StringConvert((double)r.DestinationID),
                                    Selected = false
                                });
Model.Destination = "...";

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditPageSubmit(FormCollection collection)
{
    var updatedModel = new SalesViewModel();

    if (TryUpdateModel(updatedModel))
    ...
}

奇怪的是,有时(经常是dropdownlist没有变化,保持初始值),updatedModel.Destination为null,有时又是选中的值。我真的不知道这个问题,需要帮助。谢谢。

我找到原因了。初始化变量不能与模型id相同。在这种情况下,只需更改为 Html.DropDownListFor(model => model.Destination, Model.Destinations, Model.Destination1) 即可。