在MVCrazor回来后,maintaning下降选定状态?
在MVC 4 Web中,我有下面的示例代码下拉列表:
@(Html.DropDownList("Condition2", new SelectList(Model.Makes, "CCultureId", "CTitle"), "All",new {@class="span3"}))
我将All作为选择和按下按钮的第一个选项,页面显示其中的数据。 回帖后,下拉按钮按下按钮重置,你能指导我如何在页面回发后保持其状态下降(我明白在MVC4中没有回发,我认为它是一次往返服务器的回程)。
一种方法是在控制器中返回模型中提交的值。 这意味着您的下拉列表应该连接到您的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"}))
您可以使用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"}))
你可以使用? 运算符,它的工作方式与此类似,并使用selectlistitem的Selected属性
Console.WriteLine((2 == 2 ? "true" : "false"));
然后例如
private Entities en = new Entities(); public ActionResult Index(string selectedvalue) { List 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)ViewBag.DropDown))
显然不推荐使用viewbag,而是使用带有list属性的模型。