1.建议使用这种方法
private static readonly string DEFAULT_VALUE= "请选择";
List<SelectListItem> levels = newList<SelectListItem>();
levels.Add(new SelectListItem { Text =DEFAULT_VALUE, Value = DEFAULT_VALUE });
levels.AddRange(newList<SelectListItem>()
{
new SelectListItem { Text = "销售员", Value ="1" }
});
ViewBag.Levels = levels;
@Html.DropDownListFor(model =>model.Level, ViewBag.Levels as IEnumerable<SelectListItem>)
2.
List<SelectListItem> areas =
areaBo.Find(c =>c.Valid == (Int32)IsValidStatus.Valid)
.Select(c => newSelectListItem { Text = c.Name, Value = c.Id.ToString() })
.OrderBy(c => c.Text)
.ToList();
areas.Insert(0, item);
<td colspan="3" class="left" style="vertical-align:middle;">
@Html.DropDownList("Area", @ViewBag.Area asIEnumerable<SelectListItem>)
</td>
Area是一个实体的一个属性,服务器端获取值的时候直接是model名字.值;
由于使用第二种方法重构前的代码
#region 查询条件设置
public void SetRegionWhere(string type = "f1ormu")
{
#region 得到数据库数据
IEnumerable<SalesTerritory> territories = null;
int staffId = LoginHelper.GetID();
territories = boTerritory.Find(t => t.ManagerId == staffId && t.State == (Int32)IsValidStatus.Valid);
Staff staffEntity = boStaff.FindByKey(LoginHelper.GetID());
List<SelectListItem> filiales = boFiliale
.Find(f => f.Valid == (Int32)IsValidStatus.Valid)
.Select(f => new SelectListItem { Text = f.Name, Value = f.Id.ToString() })
.OrderBy(f => f.Text)
.ToList();
filiales.Insert(0, item);
List<SelectListItem> clusters = boCluster
.Find(c => c.Valid == (Int32)IsValidStatus.Valid)
.Select(c => new SelectListItem { Text = c.ClusterName, Value = c.Id.ToString() })
.OrderBy(c => c.Text)
.ToList();
clusters.Insert(0, item);
//获取当前登录用户对应的所有销售代码
List<SelectListItem> salescodes = boTerritory.Find(n => n.ManagerId == -2238).Distinct()
.Select(s => new SelectListItem { Text = s.SalesCd, Value = s.Id.ToString() }).ToList();
salescodes.Insert(0, item);
List<SelectListItem> areas =
areaBo.Find(c => c.Valid == (Int32)IsValidStatus.Valid)
.Select(c => new SelectListItem { Text = c.Name, Value = c.Id.ToString() })
.OrderBy(c => c.Text)
.ToList();
areas.Insert(0, item);
#endregion
#region
if (type == "email")
{
if (Session[sessionEmailList] != null)
{
ViewEmailSiteCodeSearchCriteria wheremode = Session[sessionEmailList] as ViewEmailSiteCodeSearchCriteria;
if (!string.IsNullOrWhiteSpace(wheremode.Area.ToString()))
{
ViewBag.Area = new SelectList(areas, "Value", "Text", wheremode.Area);
}
else
{
ViewBag.Area = areas;
}
if (!string.IsNullOrWhiteSpace(wheremode.Cluster.ToString()))
{
ViewBag.Cluster = new SelectList(clusters, "Value", "Text", wheremode.Cluster);
}
else
{
ViewBag.Cluster = clusters;
}
if (!string.IsNullOrWhiteSpace(wheremode.Filiale.ToString()))
{
ViewBag.Filiale = new SelectList(filiales, "Value", "Text", wheremode.Filiale);
}
else
{
ViewBag.Filiale = filiales;
}
if (!string.IsNullOrWhiteSpace(wheremode.SalesCode.ToString()))
{
ViewBag.SalesCode = new SelectList(salescodes, "Value", "Text", wheremode.SalesCode);
}
else
{
ViewBag.SalesCode = salescodes;
}
return;
}
}
if (type == "sms")
{
if (Session[sessionEmailList] != null)
{
ViewSmsSiteCodeSearchCriteria wheremode = Session[sessionSMSList] as ViewSmsSiteCodeSearchCriteria;
if (!string.IsNullOrWhiteSpace(wheremode.Area.ToString()))
{
ViewBag.Area = new SelectList(areas, "Value", "Text", wheremode.Area);
}
else
{
ViewBag.Area = areas;
}
if (!string.IsNullOrWhiteSpace(wheremode.Cluster.ToString()))
{
ViewBag.Cluster = new SelectList(clusters, "Value", "Text", wheremode.Cluster);
}
else
{
ViewBag.Cluster = clusters;
}
if (!string.IsNullOrWhiteSpace(wheremode.Filiale.ToString()))
{
ViewBag.Filiale = new SelectList(filiales, "Value", "Text", wheremode.Filiale);
}
else
{
ViewBag.Filiale = filiales;
}
if (!string.IsNullOrWhiteSpace(wheremode.SalesCode.ToString()))
{
ViewBag.SalesCode = new SelectList(salescodes, "Value", "Text", wheremode.SalesCode);
}
else
{
ViewBag.SalesCode = salescodes;
}
return;
}
}
if (type == "f1")
{
if (Session[sessionF1List] != null)
{
ViewF1SiteCodeSearchCriteria wheremode = Session[sessionF1List] as ViewF1SiteCodeSearchCriteria;
if (!string.IsNullOrWhiteSpace(wheremode.Area.ToString()))
{
ViewBag.Area = new SelectList(areas, "Value", "Text", wheremode.Area);
}
else
{
ViewBag.Area = areas;
}
if (!string.IsNullOrWhiteSpace(wheremode.Cluster.ToString()))
{
ViewBag.Cluster = new SelectList(clusters, "Value", "Text", wheremode.Cluster);
}
else
{
ViewBag.Cluster = clusters;
}
if (!string.IsNullOrWhiteSpace(wheremode.Filiale.ToString()))
{
ViewBag.Filiale = new SelectList(filiales, "Value", "Text", wheremode.Filiale);
}
else
{
ViewBag.Filiale = filiales;
}
if (!string.IsNullOrWhiteSpace(wheremode.SalesCode.ToString()))
{
ViewBag.SalesCode = new SelectList(salescodes, "Value", "Text", wheremode.SalesCode);
}
else
{
ViewBag.SalesCode = salescodes;
}
return;
}
}
if (type == "mu")
{
if (Session[sessionF1List] != null)
{
ViewMUSiteCodeSearchCriteria wheremode = Session[sessionF1List] as ViewMUSiteCodeSearchCriteria;
if (!string.IsNullOrWhiteSpace(wheremode.Area.ToString()))
{
ViewBag.Area = new SelectList(areas, "Value", "Text", wheremode.Area);
}
else
{
ViewBag.Area = areas;
}
if (!string.IsNullOrWhiteSpace(wheremode.Cluster.ToString()))
{
ViewBag.Cluster = new SelectList(clusters, "Value", "Text", wheremode.Cluster);
}
else
{
ViewBag.Cluster = clusters;
}
if (!string.IsNullOrWhiteSpace(wheremode.Filiale.ToString()))
{
ViewBag.Filiale = new SelectList(filiales, "Value", "Text", wheremode.Filiale);
}
else
{
ViewBag.Filiale = filiales;
}
if (!string.IsNullOrWhiteSpace(wheremode.SalesCode.ToString()))
{
ViewBag.SalesCode = new SelectList(salescodes, "Value", "Text", wheremode.SalesCode);
}
else
{
ViewBag.SalesCode = salescodes;
}
return;
}
}
#endregion
ViewBag.Area = areas;
ViewBag.Cluster = clusters;
ViewBag.Filiale = filiales;
ViewBag.SalesCode = salescodes;
}
重构后的方法1 方法
#region 查询条件设置
public void SetRegionWhere()
{
#region 得到数据库数据
IEnumerable<SalesTerritory> territories = null;
int staffId = LoginHelper.GetID();
territories = boTerritory.Find(t => t.ManagerId == staffId && t.State == (Int32)IsValidStatus.Valid);
Staff staffEntity = boStaff.FindByKey(LoginHelper.GetID());
List<SelectListItem> filiales = boFiliale
.Find(f => f.Valid == (Int32)IsValidStatus.Valid)
.Select(f => new SelectListItem { Text = f.Name, Value = f.Id.ToString() })
.OrderBy(f => f.Text)
.ToList();
filiales.Insert(0, item);
List<SelectListItem> clusters = boCluster
.Find(c => c.Valid == (Int32)IsValidStatus.Valid)
.Select(c => new SelectListItem { Text = c.ClusterName, Value = c.Id.ToString() })
.OrderBy(c => c.Text)
.ToList();
clusters.Insert(0, item);
//获取当前登录用户对应的所有销售代码
List<SelectListItem> salescodes = boTerritory.Find(n => n.ManagerId == -2238).Distinct()
.Select(s => new SelectListItem { Text = s.SalesCd, Value = s.Id.ToString() }).ToList();
salescodes.Insert(0, item);
List<SelectListItem> areas =
areaBo.Find(c => c.Valid == (Int32)IsValidStatus.Valid)
.Select(c => new SelectListItem { Text = c.Name, Value = c.Id.ToString() })
.OrderBy(c => c.Text)
.ToList();
areas.Insert(0, item);
#endregion
ViewBag.Area = areas;
ViewBag.Cluster = clusters;
ViewBag.Filiale = filiales;
ViewBag.SalesCode = salescodes;
}
#endregion
在control返回的时候需要返回model既可以
[HttpPost]
public ActionResult EmailList(int? page, ViewEmailSiteCodeSearchCriteria wheremodel)
{
//加载页面的查询信息
SetRegionWhere();
CreateSentResultList("email");
if (wheremodel.IsSearch == 1)
{
Session[sessionEmailList] = wheremodel;
GetEmailList(wheremodel, 1);
}
return View("EmailList", wheremodel);
}