2013-04-04 59 views
0

無法找到我在做錯的地方。幫助將不勝感激。謝謝!從下拉列表中選擇選項時無法在ViewModel上設置屬性列表--- MVC4

在我的viewmodel我有屬性ListValues其中包含dropdownlist的數據。我試圖在dropdownlist中進行選擇時在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總說未定義

回答

0

這是一個重複:How to write a simple Html.DropDownListFor()?

然而

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

是你需要的答案代碼,這是你還需要轉換你的類型到selectList,儘管這已經是該模型中的那種類型。

+0

看着所有的選擇,但沒有運氣。 – kln 2013-04-04 20:52:19

+0

well @ Model.SelectedItem是沒有意義的,因爲你沒有爲選定的值設置一個值,最好是看看生成的html,你會看到你的功能如下:process(); – davethecoder 2013-04-05 08:02:11

+0

這一行應該設置SelectedItem屬性。 @ Html.DropDownListFor(model => model.SelectedItem,Model.ListValues)。我做錯了什麼? – kln 2013-04-05 14:53:12

相關問題