Asp.net mvc MVC下拉列表

Asp.net mvc MVC下拉列表,asp.net-mvc,drop-down-menu,Asp.net Mvc,Drop Down Menu,我有一个下拉列表: <%=Html.DropDownList("memberInvoiceStatus", ViewData["memberInvoiceStatus"] as SelectList)%> 我可以在视图中设置默认值吗 我是这样装订的 IEnumerable<PayStatus> memberInvoiceStatus = new List<PayStatus>(dr.GetPayStatus()); ViewData["memberInvoi

我有一个下拉列表:

<%=Html.DropDownList("memberInvoiceStatus", ViewData["memberInvoiceStatus"] as SelectList)%>
我可以在视图中设置默认值吗

我是这样装订的

IEnumerable<PayStatus> memberInvoiceStatus = new List<PayStatus>(dr.GetPayStatus());
ViewData["memberInvoiceStatus"] = new SelectList(memberInvoiceStatus, "payStatusId", "payStatusText");
因此,我有一个memberInvoiceStatus 4 total集合,但我需要每个集合的选定值,请尝试:

尝试:


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

例:


使用强类型HtmlHelper扩展可能更好,但需要使用MVC未来程序集或等到MVC 2.0。

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

例:


使用强类型的HtmlHelper扩展可能更好,但需要使用MVC组件或等到MVC 2.0。

解决此问题的方法是创建一个列表

假设您的薪资状况如下:

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.   
    }
}
<%= Html.DropDownList("Status",ViewData["ListOfStatus"]) %>
所以你可以这样做:

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.   
    }
}
<%= Html.DropDownList("Status",ViewData["ListOfStatus"]) %>
你会通过:

ViewData["memberInvoiceStatus"] = new SelectList(statusList , "payStatusId", "payStatusText");
尽管我认为如果您只是将SelectListItem列表添加到viewdata中会更容易

ViewData["ListOfStatus"] = statusList;
在视图中,您可以这样做:

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.   
    }
}
<%= Html.DropDownList("Status",ViewData["ListOfStatus"]) %>

这将生成一个列表,其中您标记为selected=true的元素作为默认的选定项。

解决此问题的方法是创建一个列表

假设您的薪资状况如下:

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.   
    }
}
<%= Html.DropDownList("Status",ViewData["ListOfStatus"]) %>
所以你可以这样做:

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.   
    }
}
<%= Html.DropDownList("Status",ViewData["ListOfStatus"]) %>
你会通过:

ViewData["memberInvoiceStatus"] = new SelectList(statusList , "payStatusId", "payStatusText");
尽管我认为如果您只是将SelectListItem列表添加到viewdata中会更容易

ViewData["ListOfStatus"] = statusList;
在视图中,您可以这样做:

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.   
    }
}
<%= Html.DropDownList("Status",ViewData["ListOfStatus"]) %>

这将生成一个列表,其中您标记为selected=true的元素将作为默认的选定项。

设置默认值,是的,但基本上它是一个no选项的选定值。这可能很方便,而且通常是一种方法。我假设他希望它从模型中获取一个默认值,比如在编辑视图中,而不是在新视图中。@tvanfosson,问题中没有足够的信息。我只是在猜测。这设置了一个默认值,是的,但基本上它是一个非选项选择值。这可能很方便,而且通常是一种方法。我假设他希望它从模型中获取一个默认值,比如在编辑视图中,而不是在新视图中。@tvanfosson,问题中没有足够的信息。我只是在猜。