我的视图中有一个 ListBox - 当我从列表框中选择一个项目时,我想调用一个控制器方法,对该值执行查找,然后用这些值重新绘制页面。
我的列表框代码和我的 jQuery 代码如下所示:
@using (Html.BeginForm())
{
...
<h3>Environments</h3>
@Html.ListBox("Environment",
new SelectList(Model.Environments),
new {@id="environmentsListbox"})
...
}
<script>
$(document).ready(function () {
$('#environmentsListbox').click(function () {
var selected = $('#environmentsListbox').find(":selected").text();
$.ajax({
url: '@Url.Action("Index")',
data: { selectedEnvironment: selected },
success: function(data) {
---- What to do here?
}
});
});
});
</script>
控制器方法如下所示:
public ActionResult Index(string selectedEnvironment)
{
// code omitted for brevity...
var frameworkConfig = GetInfo(selectedEnvironment);
return View(frameworkConfig);
}
调用正常工作,所选文本确实进入控制器方法....但是我该怎么处理结果?我正在寻找与@Html.Action("Index", selectedEnvironment)
您在普通 MVC 上下文(非 js)中使用的类似的东西。我在data
变量中有返回的视图代码,有没有办法用该值重新加载页面?
我在这篇文章中看到了答案:How to call URL action in MVC with javascript function? 并且非常接近我需要做的事情,但是来自该控制器方法的结果视图代码被推送到包含的 div 标记中,而不是当前视图。