Ajax请求控制器在asp.net中获取DropDownList的数据?

时间:2013-09-03 11:06:21

标签: asp.net-mvc jquery asp.net-ajax html-select

如果有人可以提供以下建议,我会很感激: 我调用我的控制器ActionResult传递一些字符串 然后我得到了数据。如何使用此数据填充DropDownList并将其显示给用户?

   $.ajax({
      type: "POST",                            
       url: '@Url.Action("Action","Controller")', 
      data: { passedString: "Industrial"},           
      success: function(data){
           //pass data to ViewBag??
      }
});

我的观点:

@Html.DropDownListFor(model => model.TraumaCode, (SelectList)ViewBag.TraumaList)

我的控制器动作:

    public ActionResult GetTraumaType(string passedString)
    {
        if (passedString == "Industrial")
        { 
        ViewBag.TraumaList = some Value...
        }
        else
        {
         ViewBag.TraumaList = another Value...
        }
    }

我理解我无法更改ViewBag信息,因为页面加载一次,是否有另一种方法将数据传递给DropDownList?

2 个答案:

答案 0 :(得分:1)

您可以将其作为JSON结果返回:

public ActionResult GetTraumaType(string passedString)
{
    if (passedString == "Industrial")
    { 
        return Json(some_value, JsonRequestBehavior.AllowGet);
    }
    else
    {
        return Json(some_other_value, JsonRequestBehavior.AllowGet);
    }
}

然后:

$.ajax({
    type: "POST",                            
    url: '@Url.Action("Action", "Controller")', 
    data: { passedString: "Industrial"},           
    success: function(data) {
        // here you could rebind the ddl:
        var ddl = $('#TraumaCode'); // verify the id of your ddl
        ddl.empty();
        $.each(result, function() {
            ddl.append(
                $('<option/>', {
                    value: this.value,
                    html: this.text
                })
            );
        })
    }
});

当然,您的控制器操作当然应该以JSON形式返回具有valuetext属性的数组。例如:

return Json(new[]
{
    new { value = "1", text = "item 1" },
    new { value = "2", text = "item 2" },
    new { value = "3", text = "item 3" },
    new { value = "4", text = "item 4" },
}, JsonRequestBehavior.AllowGet);

答案 1 :(得分:0)

为什么使用HTTP POST从控制器方法获取数据?

您可以将POST更改为GET或使用

修饰控制器方法
[HttpPost]

告诉ASP.NET MVC接受该方法的POST请求。

当然,您的方法必须返回ActionResult(如果您想返回JSON数据,则为JsonResult),然后AJAX success函数可以处理。