gpt4 book ai didi

jquery - 如何使用 jQuery 过滤 MVC 部分 View 中的数据

转载 作者:行者123 更新时间:2023-12-01 05:11:08 25 4
gpt4 key购买 nike

当我更改 Index.aspx 页面上的下拉列表时,如何使用 Ajax、jQuery 更新数据?我有一个带有 ProjectList 下拉列表的页面,其中应该显示与该项目相关的所有问题。

如果我更改 Controller 操作的返回值,请参阅注释代码,它要么删除母版页并仅加载 PartialView 要么不加载任何内容。我也尝试做类似的事情: return PartialView("MyIssues", paginationIssues);

通过下面的代码,我可以使用 Ajax 更改页面,但无法返回正确的数据或 html 来刷新 PartialView。

那么我做错了什么或者如何完成数据刷新?

索引.aspx

<label for="ProjectList">Project:</label>
<%= Html.DropDownList("ProjectList", "--All--") %>
<div id="divMyIssues"><% Html.RenderPartial("MyIssues", Model); %></div>
<script type="text/javascript">
$(document).ready(function() {
$("#ProjectList").change(function() {
CanIRefresh();
});
});
function CanIRefresh() {
$.ajax({
type: "POST",
url: "/Issue/" + "Index",
dataType: "html",
data: {
page: 5// just changing the page to see if it updates the
//partialView, if it does change I can then pass ProjectId
//to filter.
},
success: function(v) {
RefreshData(v);
},
error: function(v, x, w) {
//Error
}
});
}
function RefreshData(v) {
$("div#divMyIssues").html(v);
return;
}
</script>

IssueController.cs

public ActionResult Index(int? page)
{
// Load the Project List
var projectList = new SelectList(_db.Project.ToList(), "ProjectId", "Name");
ViewData["ProjectList"] = projectList;
const int pageSize = 10;
var myIssues = issueRepository.MyIssues2();
var paginatedIssues = new PaginatedList<IssueSummary>(myIssues, page ?? 0, pageSize);
ViewData.Model = paginatedIssues;
// Adding for returning partial view
//if (Request.IsAjaxRequest())
// return PartialView("MyIssues", paginatedIssues);
//else
// return View(paginatedIssues);
return View(paginatedIssues);
}

MyIssues.ascx

<ul>
<% foreach (var m in ViewData.Model)
{ %>
<li> <a href="<%= Url.RouteUrl("Default",
new { id = m.Id, controller = "Issue", action = "Details" })%>">
<%= m.Title %></a>
</li>
<% } %>
</ul>
<div class="pagination">
<% if (Model.IsPreviousPage) { %>
<%= Html.RouteLink("<<<", "MyIssues",
new { page=(Model.PageIndex-1) }) %>
<% } %>
<% if (Model.IsNextPage) { %>
<%= Html.RouteLink(">>>", "MyIssues",
new { page = (Model.PageIndex + 1) })%>
<% } %>
</div>

最佳答案

您可以使用很棒的 jQuery 表单插件:http://malsup.com/jquery/form/并让 ddl 更改事件提交表单。

$(document).ready(function() { 
var options = {
target:'#divMyIssues',
};

$('form').ajaxForm(options);
$("#ProjectList").change(function() {
$('form').submit();
});

});

您可以在 API 文档中阅读目标选项的工作原理,它非常简单。

然后阅读本教程(但您似乎已经了解 Request.IsAjaxRequest())
http://www.asp.net/learn/mvc/tutorial-32-cs.aspx

关于jquery - 如何使用 jQuery 过滤 MVC 部分 View 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1203064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com