Razor 从下拉列表中选择选项时无法设置ViewModel的属性---MVC4

Razor 从下拉列表中选择选项时无法设置ViewModel的属性---MVC4,razor,asp.net-mvc-4,Razor,Asp.net Mvc 4,找不到我做错了什么。谢谢你的帮助,谢谢 在我的viewmodel中,我有属性ListValues,其中包含dropdownlist的数据。当在dropdownlist中进行选择时,我试图在viewmodel上设置属性(SelectedItem)。但当在dropdownlist中选择某个内容时,它不会更新该值。在本例中,我使用javascript函数测试值是否已设置,但它始终显示变量未定义 我的ViewModel: public class ViewModel { priv

找不到我做错了什么。谢谢你的帮助,谢谢

在我的viewmodel中,我有属性ListValues,其中包含dropdownlist的数据。当在dropdownlist中进行选择时,我试图在viewmodel上设置属性(SelectedItem)。但当在dropdownlist中选择某个内容时,它不会更新该值。在本例中,我使用javascript函数测试值是否已设置,但它始终显示变量未定义

我的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; } 
    }
视图:

x总是表示未定义

这是以下内容的副本:

然而:
n.MyColorId,新的选择列表(颜色,“ColorId”,“Name”))%>


是您需要的答案中的代码,即您还需要将您的类型转换为selectList,尽管该类型在模型中已经存在。

查看了所有选项,但没有luck.well@Model.SelectedItem将不算什么,因为您没有为selected设置值,更好的方法是查看生成的html,您将看到您使用的LOK如下所示:process();此行应设置SelectedItem属性@DropDownListFor(model=>model.SelectedItem,model.ListValues)。是的,你的代码只是返回一个空的/新的viewmodel,所以没有值,除非你填充一个模型以开始。viewmodel有值要显示,我有一个构造函数可以这样做。只有在下拉列表中选择时,才不会为SelectedItem设置所选值。
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>
function process(x) {
    var result = x;

}