无法传递DropDownListFor<>的正确值在MVC3中的控制器中

时间:2012-07-01 17:49:19

标签: c# asp.net-mvc asp.net-mvc-3 html.dropdownlistfor

我正在开发一个应用程序,其中我有一个下拉列表,我希望每当下拉列表的选择有任何变化时,必须相应地选择相同的部分视图。

我正在使用dropdownlist

 @Html.DropDownListFor(x => x.ID,
              new SelectList(new List<Object>{ new { value = 0 , text = "MCQ"  },new { value = 1 , text = "Rating Scale" },
                           new { value = 2 , text = "Comment Box"}}, "Value", "Text"),
            "Select Answer Type",
            new
            {
                id = "myddl",
                data_url = Url.Action("GetHtml", "Question")
            })
用于跟踪选择更改事件的

jQuery 代码

 $(function () {
        $('#myddl').change(function () {
            var url = $(this).data('url');
            var value = $(this).val();
            $('#result').load(url)
        });
    });

我正在使用名为 GetHTML 的行动作为

public ActionResult GetHtml(string value)
        {

            if (value== "0")
           {
             return PartialView("_OAns");
           }
            else if (value== "1")
           {
               return PartialView("_RScale");
           }
            else if (value== "2")
           {
               return PartialView("_Comments");
           }
           else
           {                   
               return View("Index");
           }
        }

上面的代码工作正常但是当我在下拉框中选择一个值时,它总是返回这个View("Index")即可能是它永远不会获取与值1,2匹配的值或3

是什么原因?我想应用选择更改,但它不会发生在这里。行动或传递价值有什么问题吗?

请帮忙

1 个答案:

答案 0 :(得分:3)

您已在value回调中声明了此change变量,但您似乎没有对其进行任何操作。所以做一些事情,例如将其发送到服务器:

$(function () {
    $('#myddl').change(function () {
        var url = $(this).data('url');
        var value = $(this).val();
        $('#result').load(url, { value: value });
    });
});

注意.load()函数的第二个参数。它允许您在AJAX请求期间将数据传递到服务器。