0

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

在我的视图模型中,我有属性 ListValues,其中包含下拉列表的数据。当在下拉列表中进行选择时,我正在尝试在 viewmodel 上设置属性(SelectedItem)。但是当在下拉列表中选择某些内容时,它不会更新值。在此示例中,我使用 javascript 函数来测试该值是否已设置,但它始终显示变量未定义。

我的视图模型:

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 总是说未定义

4

1 回答 1

0

这是一个副本:如何编写一个简单的 Html.DropDownListFor()?

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

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

于 2013-04-04T19:47:12.140 回答