在ASP.NET MVC中提交表单后,将选定的下拉列表设置为零

时间:2015-04-12 17:28:28

标签: c# jquery asp.net asp.net-mvc

我对新的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; }
    }

2 个答案:

答案 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;下拉列表中顶部项的属性是什么,然后传回一个包含它应该工作的绑定属性的模型?