我正在尝试根据用户从下拉列表中的选择异步更新数据表。使用我读过的东西 here在其他地方,我一直在尝试使用局部 View 来完成此操作。我的代码看起来像这样:
首页.cshtml:
<body>
<div id="main-region">
<div class="mySelector">
<label class="dropdown-label">Filter: </label>
@Html.DropDownListFor(m => m.SelectedStatus, Html.GetEnumSelectList(typeof(MyEnum)),
new { @id = "mySelector" })
</div>
<div id="myPartialView">
@Html.Partial("_Summary", Model)
</div>
</div>
<script type="text/javascript" src="~/lib/jquery/dist/jquery.min.js"></script>
<script type="text/javascript">
$('#mySelector').change(function () {
var newSelectionID = $(this).val();
$('#myPartialView').load('@Url.Action("Filter", "Home")') //syntax for including newSelectionID?
});
</script>
_Summary.cshtml 只是一个简单的表格。
HomeController.cs:
[HttpGet]
public IActionResult Filter(string statusID)
{
var modelData = mService.GetData(statusID);
return PartialView("_Summary", model);
}
我坚持两件事:
- 我什至无法在服务器端访问我的 Filter 方法。
- 我不确定如何传回用户选择的值。
我显然遗漏了一些东西。谁能帮我吗?我正在使用 asp.net 核心。
非常感谢。
最佳答案
您的代码可能会崩溃,因为您没有将 statusID
参数传递给您的方法,我看到您正在使用参数值来获取局部 View 所需的模型数据。如果代码崩溃,服务器将在响应中返回一个 500 内部错误状态代码,并且 div (myPartialView
) 将不会更新内容。
由于您的操作方法是用 GET 属性修饰的,因此您可以在查询字符串中传递值。
这应该可行
$(function() {
$('#mySelector').change(function() {
var v = $(this).val();
$('#myPartialView').load('@Url.Action("FilterOnStatus", "Home")?statusID=' + v);
});
});
关于c# - 如何异步更新 ASP.NET MVC 分部 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47381160/