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