0

私が間違っているところを見つけることができません。助けていただければ幸いです.Thanks!

私のビューモデルには、ドロップダウンリストのデータを含むプロパティ ListValues があります。ドロップダウンリストで選択が行われたときに、ビューモデルにプロパティ(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

これは次の複製です: How to write a simple Html.DropDownListFor()?

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

必要な回答のコードです。これは、モデルで既にそのタイプになっているにもかかわらず、タイプをselectListに変換する必要があることです。

于 2013-04-04T19:47:12.140 に答える