2009-05-06 58 views
3

我正在构建我的第一个MVC应用程序,并遵循'NerdDinner'教程。但是,在以同样的方式从SelectList创建下拉列表时,我遇到了一个问题。mvc - dropdownlist没有在编辑视图中正确填充

出于某种原因,当我调出'编辑'视图时,即使数据库中的数据设置为其他数据并且'详细信息'视图显示正确的值,下拉列表也不会显示正确的选择。每个人都只是想出列表中的第一个值。

我已经通过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> 

以相同的形式的文本字段已它们的值正确填充。这只是所有的下拉没有!

非常感谢您的关注。

+0

我已经经历了一步一步的调试程序,当它完成渲染页面时,正确的事情看起来会出来。但是......它只是没有。 – user101306 2009-05-06 04:18:04

+1

您可以发布HtmlHelper和编辑操作的代码片段吗? 也是HTML输出。 – 2009-05-07 07:11:17

回答

2

呵呵。看来,htmlhelper是太好了。我删除了对模型的引用,一切正常!

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

成为

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

和我们的黄金。 ViewData是否包含一些名为“Parking”的内容,是因为我在模型中引用了它,所以它压缩了另一个值......或者某个东西......?

1

人们的快速提示 - 当他们需要下拉列表时,不要命名您的任何模型属性“标题”。该框架将与视图标题混合在一起,并且不起作用 - 我花了整整一个下午把这件事撕掉。需要睡觉才能意识到发生了什么。