具体问题是这样的,新建了一个MVC项目,在Home\Index.cshtml 里面有几个选项:有一个下拉菜单,
<select id="picklist1"> 
   <option value="option1">Option1</option> 
   <option value="option2">Option2</option> 
</select> 还有一个按钮
<button name="submit" id="submit">Submit</button>还有另一个下拉菜单,
<select id="picklist2"> 
</select> 用户点击Submit按钮则向Controller传送用户在picklist1里面选择的内容,Controller处理完毕,将返回一字符串数组,
我需要把这个数组的内容显示在picklist2里面,
比如:<select id="picklist2"> 
   <option value="string1">string1</option> 
   <option value="string2">string2</option> 
</select> 我的问题是:
1. 如何将picklist1里面的被选择的数据传递给Controller
2. Controller如何返回数据给index.cshtml
3. 如何把返回的数据显示在picklist2里面
新手MVC,希望给出解决我这个具体问题的代码来帮助理解。
非常感谢。

解决方案 »

  1.   

    1. 如何将picklist1里面的被选择的数据传递给Controller
    用Request.From["picklist1"]取值,picklist1这个是select的name属性
    2. Controller如何返回数据给index.cshtml
    用ViewData["Skey"]=你的数据
    3. 如何把返回的数据显示在picklist2里面
    将ViewData["Skey"]绑定给picklist2 
      

  2.   

    1、picklist1这个是select的name属性 提交会自动获取值public ActionResult Index()
            {
                return View();
            }        [HttpPost]
            public ActionResult Index(string picklist1)
            {
                return View();
            }
    2、在Controller把数据做处理 转换为IEnumerable<SelectListItem>ViewBag.name=处理后的数据3、在页面上绑定
    @Html.DropDownListFor(m => m.id, ViewBag.name as IEnumerable<SelectListItem>)
      

  3.   

    例子:【View】@Html.DropDownList("ResourceID", "")【Controller】[NonAction]
    private void PopulateResourcesDropDownList(int? selectedValue = null)
    {
       ViewBag.ResourceID = new SelectList(unitOfWork.ResourceRepository.GetAll().Select(r =>
         new { ID = r.ID, Name = r.Name + "(" + (r.Comment ?? "无") + ")" }), "ID", "Name", selectedValue);
    }
      

  4.   

    谢谢回复,我可能需要一个针对我提的问题的更详细的一个例子,因为是MVC新手,呵呵。
      

  5.   

    http://developer.51cto.com/art/200910/159507.htm
      

  6.   

    MVC4出来了吗?
    OUT了的说呀!!
      

  7.   

    谢谢回复,我可能需要一个针对我提的问题的更详细的一个例子,因为是MVC新手,呵呵。
      

  8.   

    无刷新的方式,要刷新可用一楼的方法。function LoadInfo() {
         var _this = this;
         var aj = 1;
         var postData = {};
         postData["picklist1"] = $('#picklist1').attr('value');
         if (aj == 1) {
             aj = 0;
             $.ajax({
                 type: "post",
                 url: "/Controller/Action,   //控制器名/操作名(返回jsonResult)
                 dataType: 'json',
                 data: postData,
                 success: function (x) {
                     $('#picklist2').empty();
                     if (x != null) {
                         if (x != null) {
         var Data='';
     for(var i=0;i<x.length;i++)
     {
        Data += '<option value=' + x[i].value + '>' + x[i].key + '</option>';
     }
     $("#picklist2").append(Data);
                         }
                     }
                 },
                 complete: function () { aj = 1; }
             });
             return false;
         }
     }
     public JsonResult Action()
     {
        string strValue=Request.Form["picklist1"];
    List<model> list=server.Getpicklist2(strValue);
        return json(list);
     }
      

  9.   

    多谢,请问这个jscript如何嵌入View,这个代码有否测试过呢?