【发布时间】:2020-04-28 07:46:03
【问题描述】:
我开发了一个asp.net MVC 网络应用程序,其中有一个表格,其中显示了模型中的一些项目。
- 我现在可以使用 ajax 使用下拉列表对其进行过滤
- 我传递给表格的模型是正确的(如果我在 foreach 之前进入模型,由于过滤器,有 3 行而不是 10 行)
问题是表格没有改变,它总是将所有行显示为初始请求。
看起来它可以工作,但表格不会更新......
这是我的 jquery ajax 调用:
$("#Dropdown1Id").on('change', function () {
//console.log("onchange");
//console.log($("#Dropdown1Id").val());
var drpdown1 = $("#Dropdown1Id").val();
var submit = $("#submitButton");
$.ajax({ // crea una chiamata AJAX
data: { data: drpdown1 }, // prendi i dati del form in questo caso del primo dropdown
type: "GET", // GET o POST
url: "/Select/Filter", // li passa al controller
success: function () { // se va con successo esegue il codice seguente
submit.click();
$("#frmId").submit();
},
error: function (error) {
console.log("error")
}
});
});
这是我的控制器操作:
public ActionResult Filter(string data)
{
List<Card> cards = new List<Card>();
ViewBag.stato = new SelectList(myApi.GetState(), "Name", "Name");
if (data != null && data != "")
{
foreach (var card in model)
{
if (card.IdList == data || data == "")
cards.Add(card);
}
return View(cards);
}
return View(model);
}
这是我对 daple 和下拉菜单的看法:
@using (Html.BeginForm(new { id = "frmId"}))
{
@Html.AntiForgeryToken()
<table id="tb2">
<tr>
<th>
<h4> LIST : @Html.DropDownList("stato", null, new { @id = "Dropdown1Id" })</h4>
</th>
@*<th>
<h4>ARCHVIED : @Html.DropDownList("closed", null, new { @id = "Dropdown2Id" })</h4>
</th>*@
<th>
<input type="submit" value="Filter" class="btn btn-info" id="submitButton" />
</th>
</tr>
</table>
<br />
<div id="risultato"></div>
<table class="table" id="tb1">
<tr>
<th style="text-align:center">
TRELLO'S CARDS LIST
</th>
<th>LIST</th>
<th>ARCHVIED</th>
<th>Expiration date</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.IdList)
</td>
@if (item.Closed == "True")
{
<td>YES</td>
}
else
{
<td>NO</td>
}
@if (item.Due != null)
{
<td>
@Html.DisplayFor(modelItem => item.Due)
</td>
}
else
{
<td>
Not Present
</td>
}
</tr>
idList.Add(item.Id);
}
</table>
【问题讨论】:
-
提交表单时会发生什么?看来您的 AJAX 调用正在返回过滤后的数据,但您没有对它做任何事情。您需要找到一种方法来根据 AJAX 调用的结果动态更新您的视图模型。
-
当我选择一个下拉值时,我在控制器过滤器中输入并按我选择的内容进行过滤,然后如果我转到生成行的 foreach 并单击模型(@foreach( var item in Model)我看到它只有我过滤的行,但表格内容没有改变,我不知道该怎么做......首先我有一个提交按钮下拉菜单,它的工作原理
-
您提交了两次表单,
submit.click()和('#frmId').submit()。 -
我知道,我正在尝试,但它不起作用,它重新加载页面但不过滤表格
-
从你的
AJAX,通过控制器返回一个JSON结果,然后将html设置为Controller返回的数据集。
标签: c# jquery asp.net ajax model-view-controller