如果有人可以提供以下建议,我会很感激: 我调用我的控制器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?
答案 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形式返回具有value
和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);
答案 1 :(得分:0)
为什么使用HTTP POST从控制器方法获取数据?
您可以将POST更改为GET或使用
修饰控制器方法[HttpPost]
告诉ASP.NET MVC接受该方法的POST请求。
当然,您的方法必须返回ActionResult
(如果您想返回JSON数据,则为JsonResult
),然后AJAX success
函数可以处理。