2010-01-11 151 views
0

我有一个下拉列表:MVC下拉列表

<%=Html.DropDownList("memberInvoiceStatus", ViewData["memberInvoiceStatus"] as SelectList)%> 

我可以设置在视图中的默认值?

我这样的结合...

IEnumerable<PayStatus> memberInvoiceStatus = new List<PayStatus>(dr.GetPayStatus()); 
ViewData["memberInvoiceStatus"] = new SelectList(memberInvoiceStatus, "payStatusId", "payStatusText"); 

所以我有memberInvoiceStatus(共4个)的集合,但我需要的每个

回答

0

你可以解决它的一种方法是创建一个List。

假设你的工资状况是这样的:

public class PayStatus 
{ 
    int id; 
    string StatusName; 
} 

所以你会做这样的事情:

IEnumerable<PayStatus> memberInvoiceStatus = new List<PayStatus>(dr.GetPayStatus()); 

var statusList = new List<SelectListItem>(); 

foreach(var status in memberInvoiceStatus) 
{ 
    statusList .Add(new SelectListItem() 
    { 
     Text = status.StatusName, 
     Value = status.id 
     Selected = status.StatusName == "MyDefaultStatus" // or some logic that will mark as True the item that you want to be the default selected one. 
    } 
} 

我猜你仍然可以使用它像你使用它,而是考取这一点:

ViewData["memberInvoiceStatus"] = new SelectList(memberInvoiceStatus, "payStatusId", "payStatusText"); 

你会传递:

ViewData["memberInvoiceStatus"] = new SelectList(statusList , "payStatusId", "payStatusText"); 

虽然我认为这是比较容易,如果你刚刚添加的SelectListItem列表中的可视数据

ViewData["ListOfStatus"] = statusList; 

,并在视图中你做这样的事:

<%= Html.DropDownList("Status",ViewData["ListOfStatus"]) %> 

,这将使作为默认(选定)项目的一个列表,其中包含您标记为选中元素的列表(Selected = true)。

3

选择的值尝试this

<%=Html.DropDownList("memberInvoiceStatus", ViewData["memberInvoiceStatus"] as SelectList, "--DEFAULT TEXT--")%> 
+0

设置了默认值,是的,但基本上它是一个“无选项”值。这可以很方便,并且通常是要走的路。我假设他希望它从模型中获取默认值 - 比如在编辑视图中而不是新视图中。 – tvanfosson 2010-01-11 20:16:58

+0

@tvanfosson,问题中没有足够的信息。我只是在这里猜测。 – 2010-01-11 20:21:03

0

我假设你想让这个值反映模型的当前值。如果没有,您可以使用帮助程序的版本,该版本允许您为列表指定默认的“未选中”选项。如果是这样,你可能希望在你的模型或视图数据中有两个不同的属性 - 我几乎总是使用强类型的视图模型 - 一个用于属性,另一个用于选择列表。如果可用,助手将从属性值中选择默认的选择列表。

例:

<%= Html.DropDownList("memberInvoiceStatus", ViewData["memberInvoiceOptions"] as SelectList) %> 

其中memberInvoiceStatus是属性(返回上柱和含有上视图默认)和memberInvoiceOptions是选择列表。使用模式(我会走的路),它看起来像:

public class InvoiceViewModel 
{ 
     public int MemberInvoiceStatus { get; set; } 
     public IEnumerable<SelectListItem> MemberInvoiceOptions { get; set; } 
     ... 
} 


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

使用强类型的HtmlHelper扩展可能是更好的,但是使用MvcFutures装配或等到MVC 2.0要求。