MVC Updatemodel不从DropDownList更新

时间:2009-10-23 02:46:46

标签: asp.net-mvc model-view-controller drop-down-menu updatemodel

我的编辑界面上有以下内容:

<label for="campaign.CandidateID">Candidate:</label>
<%= Html.DropDownList("Campaign.CandidateID", Model.Candidates, "Choose...")%>
<%= Html.ValidationMessage("CandidateID", "*") %>

并在我的控制器中:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection formValues)
{
    Campaign campaign = repos.GetCampaign(id);
    try
    {
        UpdateModel(campaign);
        repos.Save();
        return RedirectToAction("Index", "Admin");
    }
    catch
    {
        return View(new CampaignDTO(campaign));
    }

当我编辑记录并更改文本字段时,一切都运行正常,但是当我更改连接到下拉列表的项目时,更改不会在广告系列对象中更新。我检查了this.ValueProvider["Campaign.CandidateID"],数据就在那里!

顺便说一句,在显示编辑屏幕的过程中,它会在选择列表中选择正确的候选者。

问题可能来自ValueProvider提供字符串而我班上的CandidateID是int吗?

我很难过。

1 个答案:

答案 0 :(得分:2)

你是否在文本字段的名称前加上“Campaign”(即Html.TextBox(“Campaign.Name”)?当你调用UpdateModel而没有指定前缀时,ValueProvider字典中包含前缀的任何数据(即“Campaign.CandidateID”)没有资格绑定到模型对象。这就是为什么你在ValueProvider字典中看到“Campaign.CandidateID”条目(因为它已在请求中成功发布),但它不是绑定到您的Campaign对象。