2009-07-16 84 views
2

尝试创建一个选择列表,并将第一个选项文本设置为空字符串。作为数据源,我有一个具有属性“Key”&“Value”的GenericKeyValue类的列表。我目前的代码如下。使用mvccontrib创建第一个选项文本的选择列表?

   <%= this.Select(x => x.State).Options(ViewData[Constants.StateCountry.STATES] as IList<GenericKeyValue>, "Value", "Key").Selected(Model.State) %> 

这得到填补与各国的选择列表,但我在这一点上的一个优雅的方式来获得空字符串的第一个选项文本不确定。

+0

我一直在寻找与流畅的做法MVC的Contrib提供了实现这个目标,我知道这是可以做到使用默认的MVC下拉列表HTML助手。 – aherrick 2009-07-17 12:47:46

回答

2

“尝试创建一个选择列表,并将第一个选项文本设置为空字符串。”的标准方法是不流利,但感觉就像较少的工作:在控制器和视图

ViewData[Constants.StateCountry.STATES] = SelectList(myList, "Key", "Value"); 

​​
0

或者这...

你的观点;

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

您的控制器;

public class MyFormViewModel 
{ 
    public SelectList States; 
} 

public ActionResult Index() 
{ 
    MyFormViewModel fvm = new MyFormViewModel(); 
    fvm.States = new SelectList(Enumerations.EnumToList<Enumerations.AustralianStates>(), "Value", "Key", "vic"); 

    return(fvm); 
} 
0

没有扩展任何东西 - 你不能。

下面就是笔者说:

最后一点。 MvcFluentHtml的目标是将意见留给你。我们通过允许您定义自己的行为来做到这一点。然而,这并非没有关于实践的意见。例如,Select对象没有任何“第一选项”功能。这是因为在我看来,添加选项并不是关注的问题。

编辑:
在另一方面 - 有在最新的源代码,选择“FirstOption”的方法。
通过svn下载MvcContrib,构建和使用。

1

当然可以,但你把它添加到你绑定到下拉列表...

List<State> list = _coreSqlRep.GetStateCollection().OrderBy(x => x.StateName).ToList(); 
list.Insert(0, new State { Code = "Select", Id = 0 }); 
ViewData["States"] = new SelectList(list, "Id", "StateName", index); 
+0

我实际上已经走下了这条路,感谢... – aherrick 2009-10-01 23:19:15

相关问题