我对新的asp.net mvc和使用aps.net mvc 5.我在aps.net mvc中使用html助手创建了下面的下拉列表。当我提交(回发)表格时,我想将所选索引设置为零。在这里,我使用optionLabel" - 选择 - "。我希望在回发后将所选值设置为该值(" - 选择 - ")。如何实现这一目标。请帮忙。谢谢。
@Html.DropDownListFor(model => model.TestCategory, new SelectList(@ViewBag.TestCategories, "value", "text"), "-- Select --", new { @class = "form-control input-sm"})
控制器代码
[HttpGet]
public ActionResult Index()
{
var model = new LaboratoryViewModel {
medicaltestlist = new List<MedicalTest>()
};
PopTestCategory();
PopEmptyDropdown();
return View(model);
}
[HttpPost]
public ActionResult Index(LaboratoryViewModel labvm)
{
var test = PopMedicalTests().Where(x => x.TestSerial == Convert.ToInt32(labvm.TestCode)).FirstOrDefault();
if (labvm.medicaltestlist == null)
labvm.medicaltestlist = new List<MedicalTest>();
if(!labvm.medicaltestlist.Any(x=> x.TestSerial == test.TestSerial))
labvm.medicaltestlist.Add(test);
labvm.TestCategory = "";
PopTestCategory();
return View(labvm);
}
public void PopTestCategory()
{
var categorylist = new List<DropDownItem>
{
new DropDownItem{value="Medical",text="Medical"},
new DropDownItem{value="Animal",text="Animal"},
new DropDownItem{value="Food",text="Food"},
new DropDownItem{value="Water",text="Water"}
};
ViewBag.TestCategories = categorylist;
}
public class DropDownItem
{
public int id { get; set; }
public string value { get; set; }
public string text { get; set; }
}
答案 0 :(得分:1)
您在post post方法中返回视图,因此如果您选择(比方说)Animal
,那么当您返回视图时将选择该值,因为html助手使用ModelState
中的值,而不是labvm.TestCategory = "";
模特财产。设置ModelState.Clear();
无效。正确的方法是遵循PRG模式并重定向到GET方法,但是您可以在设置重置TestCategory
的值之前调用ModelState
来完成此工作,尽管这将清除所有DropDownItem
属性和错误,可能有其他副作用。
旁注:你SelectListItem
课似乎没必要。 MVC已经有一个PopEmptyDropdown()
类,旨在使用下拉列表,无论如何,您可以使用
ViewBag.TestCategories = new SelectList(new List<string>() { "Medical", "Animal", "Food", "Water" });
方法中的所有代码
@Html.DropDownListFor(m => m.TestCategory, (SelectList)@ViewBag.TestCategories, "-- Select --", new { @class = "form-control input-sm"})
并在视图中
{{1}}
答案 1 :(得分:0)
如果设置&#34;值&#34;下拉列表中顶部项的属性是什么,然后传回一个包含它应该工作的绑定属性的模型?