mvc - 下拉列表未在“编辑”视图中正确填充

时间:2009-05-06 04:15:56

标签: asp.net-mvc selectlist

我正在构建我的第一个MVC应用程序,通过了'NerdDinner'教程。但是,在以相同的方式从SelectList创建下拉列表时,我遇到了一个问题。

出于某种原因,当我调出“编辑”视图时,下拉列表未显示正确的选择,即使数据在数据库中另外设置并且“详细信息”视图显示正确的值。每个人都想出列表中的第一个值。

我已经逐段浏览了NerdDinner代码并且不能在我的生活中看到任何差异,但该应用程序将在编辑时正确显示当前值的下拉列表,而我的不会。

任何人都有建议从哪里出发?如果有人要求提供特定的内容,我可以发布代码片段。

更新

在字段集中:

        <p>
            <label for="Parking">Parking Arrangement:</label>
            <%= Html.DropDownList("Parking", Model.Parking)%>
            <%= Html.ValidationMessage("Parking", "*") %>
        </p>

编辑操作:

    //
    // GET: /Buyer/Edit/2
    public ActionResult Edit(int id)
    {
        Buyer_Profile buyer_profile = buyerRepository.GetBuyerProfileByID(id);

        if (buyer_profile == null)
            return View("NotFound");
        else if (!buyer_profile.IsOwnedBy(User.Identity.Name, id))
            return RedirectToAction("Index", "Home");
        else
            return View(new BuyerFormViewModel(buyer_profile));
    }

他们以NerdDinner为例构建它,我创建了一个'... FormViewModel':

public class BuyerFormViewModel
{
    // Properties
    public Buyer_Profile Buyer_Profile { get; private set; }
    public SelectList Parking { get; private set; }

    // Constructor
    public BuyerFormViewModel(Buyer_Profile buyer_profile)
    {
        Buyer_Profile = buyer_profile;
        Parking = new SelectList(BuyerProfileOptions.Parking, Buyer_Profile.Parking);
    }
}

当值已在详细信息视图中显示并存储在d / b中时,单击“编辑”时生成的HTML:

<p>
  <label for="Parking">Parking Arrangement:</label>
  <select id="Parking" name="Parking"><option>No Preference</option>
  <option>On Street</option>
  <option>Assigned Street</option>
  <option>Open Garage</option>
  <option>Covered Garage</option>
  </select>                
</p>

同一表单中的文本字段的值已正确填充。这只是所有下拉菜单都没有!

非常感谢你的关注。

2 个答案:

答案 0 :(得分:2)

咦。似乎htmlhelper太好了。我删除了对模型的引用,一切正常!

 <%= Html.DropDownList("Parking", Model.Parking)%>

变为

 <%= Html.DropDownList("Parking")%>

我们是金色的。 ViewData是否包含一些名为“Parking”的内容,因为我在模型中引用它,因此它会压缩其他值...或者其他东西......?

答案 1 :(得分:1)

人员快速提示 - 当需要下拉列表时,不要将任何模型属性“标题”命名为。该框架将与视图标题混淆并且不起作用 - 我花了整整一个下午的时间撕掉我的头发。需要睡在上面才能意识到发生了什么。