0

如果有人能就以下内容提出建议,我将不胜感激:我调用我的控制器 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?

4

2 回答 2

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
                })
            );
        })
    }
});

value现在当然你的控制器动作应该作为 JSON 返回一个具有和text属性的数组。例如:

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);
于 2013-09-03T11:10:25.447 回答
0

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

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

[HttpPost]

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

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

于 2013-09-03T11:14:07.050 回答