在MVC 4 Web中,我有下面的示例代码下拉列表:
@(Html.DropDownList("Condition2", new SelectList(Model.Makes, "CCultureId", "CTitle"), "All",new {@class="span3"}))
我选择全部作为第一个选项,按下按钮,页面显示数据。回帖后,下拉按钮按下按钮重置,你能指导我如何在页面回帖后保持其状态下拉(我明白在MVC4中没有回发,我认为它是一次往返服务器的回程)。
答案 0 :(得分:7)
执行此操作的一种方法是在控制器中返回模型中提交的值。这意味着您的下拉列表应该与您的viewmodel连接。
视图模型:
public class MyViewModel
{
// more properties...
public string Make {get;set;}
// more properties
}
控制器:
[HttpPost]
public ActionResult MyAction(MyViewModel model)
{
// do postback stuff
return View(model); // model.Make is set to whatever was submitted and will be returned
}
HTML:
@model Models.MyViewModel
@(Html.DropDownListFor(m => m.Make,
new SelectList(Model.Makes, "CCultureId", "CTitle", Model.Make),
"All", new {@class="span3"}))
答案 1 :(得分:0)
您可以使用Viewbag保存所选项目,请参阅blew:
获取行动
[HttpGet]
public ActionResult YourAction()
{
ViewBag.SelectedItem = "";
///
return View(new yourViewModel);
}
发布操作
[HttpPost]
public ActionResult YourAction(FormCollection form,YourViewModel model)
{
ViewBag.SelectedItem = form["Condition2"];
///
return View(model);
}
查看强>
@(Html.DropDownList("Condition2", new SelectList(Model.Makes, "CCultureId",
"CTitle",ViewBag.SelectedItem), "All",new {@class="span3"}))
答案 2 :(得分:0)
你可以用吗?运算符,它的工作方式与此类似,并使用selectlistitem的Selected属性
Console.WriteLine((2 == 2 ? "true" : "false"));
然后例如
private Entities en = new Entities();
public ActionResult Index(string selectedvalue)
{
List<SelectListItem> selectlist =
en.tblUser.Select(x => new SelectListItem { Text = x.Name, Value = x.Id,
Selected = ( x.Name == selectedvalue ? false : true) })
.ToList();
ViewBag.DropDown = selectlist;
return View();
}
然后在视图中你简单地把这个
@Html.DropDownList("DropDownName", (List<SelectListItem>)ViewBag.DropDown))
显然不建议使用viewbag,而是使用带有list属性的模型。