从下拉列表--- MVC4中选择选项时,无法在ViewModel上设置属性

时间:2013-04-04 19:43:39

标签: razor asp.net-mvc-4

无法找到我做错的地方。帮助将不胜感激。谢谢!

在我的viewmodel中,我有属性ListValues,其中包含dropdownlist的数据。我正在尝试在dropdownlist中进行选择时在viewmodel上设置属性(SelectedItem)。但是,当在下拉列表中选择某些内容时,它不会更新该值。在这个例子中,我使用javascript函数来测试是否已经设置了值,但是它总是表示变量undefined。

我的ViewModel:

public class ViewModel
    {
        private readonly List<SelectListItem> items;
        public ViewModel()
        {
            items = new List<SelectListItem>();
            items.Add(new SelectListItem() { Text = "Texas", Value = "1", Selected = true });
            items.Add(new SelectListItem() { Text = "Illinios", Value = "2", Selected = false });
            items.Add(new SelectListItem() { Text = "New York", Value = "3", Selected = false });
            items.Add(new SelectListItem() { Text = "Kansas", Value = "4", Selected = false });

            ListValues = items;
        }
        public string SelectedItem { get; set; }
        public IEnumerable<SelectListItem> ListValues { get; set; } 
    }

行动方法:

public class EmployersController : Controller
    {
        //
        // GET: /Employers/

        public ActionResult Index()
        {
            ViewModel vm = new ViewModel();
            return View(vm);
        }

    }

查看:

@using System.Collections
@model DemoMVCApplication.Models.ViewModel
<script src="~/Scripts/Custom/default.js"></script>
@{
    ViewBag.Title = "Index";
}

@Html.DropDownListFor(model => model.SelectedItem, Model.ListValues)
<button id="button123"  onclick="process(@Model.SelectedItem);">Call Script</button>
<h2>Index</h2>

javascript来测试是否已设置值

function process(x) {
    var result = x;

}

x总是说未定义

1 个答案:

答案 0 :(得分:0)

这是:How to write a simple Html.DropDownListFor()?

的副本

但是:<%= Html.DropDownListFor(n => n.MyColorId, new SelectList(Colors, "ColorId", "Name")) %>

是您需要的答案代码,这是您还需要将您的类型转换为selectList,尽管这已经是模型中的那种类型。