我有一个下拉列表,一个TextBox和一个Button,DropDdown包含ColumnNames(Name,Cpr),用于查看过滤后的数据用户从dropDown中选择一个值,输入一个字符串并单击Button。为了做到这一点,我写了下面的代码,但无法获得DropDown选择值,除了这个问题代码工作正常.plz告诉我在哪里我做错了。 以下是我的控制器
public ActionResult Index(string searchType,FormCollection frm)
{
List<SelectListItem> obj = new List<SelectListItem>();
obj.Add(new SelectListItem { Text = "Agent Name", Value = "Name", Selected = true });
obj.Add(new SelectListItem {Text = "CPR Number", Value = "Cpr"});
ViewBag.cmb = obj;
var agents = from s in db.Agents
select s;
if (searchType != null)
{
ViewBag.searchString = searchType;
string cmbColumnSelection = frm["cmb"];
switch (cmbColumnSelection)
{
case "Name": // Table=Agent,Column=Name
agents = agents.Where(s => s.Name.ToString().Contains(searchType));
break;
default:
agents = agents.Where(s => s.Cpr.ToString().Contains(searchType));
break;
}
}
return View(agents.ToList());
} `
在视图中
@using (Html.BeginForm("Index", "Agent", FormMethod.Get))
{
<p>
@Html.TextBox("searchType", ViewBag.searchString as string)
Select Filter : @Html.DropDownList("cmb")
<input type="submit" value="Submit" class="btn btn-primary" />
</p>
}
答案 0 :(得分:0)
不要混合动作输入参数和表单集合。您有searchType
的良好开端,与cmb
保持一致并完全删除表单集合:
public ActionResult Index(string searchType, String cmb)
就是这样,cmb
将包含从下拉列表中发布的值。现在就使用它:
string cmbColumnSelection = cmb;
甚至
switch (cmb)
{...