كيف يمكنني تصفية البيانات في MVC partialview باستخدام مسج
-
05-07-2019 - |
سؤال
كيف يمكنني تحديث البيانات باستخدام Ajax, jQuery عندما أقوم بتغيير القائمة المنسدلة على المؤشر.صفحة aspx?لدي صفحة مع ProjectList المنسدلة التي يجب أن تظهر جميع القضايا المتعلقة بذلك المشروع.
إذا قمت بتغيير قيمة العائد على وحدة تحكم العمل ، انظر علق التعليمات البرمجية ، إما يزيل الصفحة الرئيسية فقط بتحميل PartialView أو لا يتم تحميل أي شيء.كما أنني حاولت أن تفعل شيئا مثل:عودة PartialView("MyIssues", paginatedIssues);
مع رمز أدناه وأنا قادرة على تغيير الصفحة باستخدام اياكس ولكن أنا لا ترد على البيانات الصحيحة أو 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>
المحلول
هل يمكن استخدام مسج رهيبة شكل البرنامج المساعد: http://malsup.com/jquery/form/ و قد ddl تغيير الحدث تقديم النموذج.
$(document).ready(function() {
var options = {
target:'#divMyIssues',
};
$('form').ajaxForm(options);
$("#ProjectList").change(function() {
$('form').submit();
});
});
يمكنك أن تقرأ في API مستندات كيف الهدف الأول ، انها بسيطة كما يحصل مع ذلك.
ثم قراءة هذا البرنامج التعليمي (ولكن يبدو أنك بالفعل تعرف عن الطلب.IsAjaxRequest())
http://www.asp.net/learn/mvc/tutorial-32-cs.aspx
نصائح أخرى
متأكد من أن هذا سوف يساعد ولكن لقد تم القيام مماثلة في الأسبوع الماضي أو نحو ذلك.
أنا لم أفعل $.اياكس اعتدت $.ما بعد.ولكن الشيء المهم في نظر الطرف أن تدرج , "json")
في نهاية البيان.تستخدم عندما عاد سلمان البيانات التي يمكن أن itterate من خلال.في التعليمات البرمجية خلف ثم كان لي أن تفعل return Json(mydata
بحيث لا يمكن في الواقع itterate خلال عاد المجموعة.
لا return PartialView("commentList"
في مكان آخر و في نهاية العميل أنا
$.post("/jQueryTests/jQueryAddMessageComment", { commentText: commentText }, function(newComment) {
$("#divComments" + id.toString()).html(newComment);
});
أنا لست متأكدا مما إذا كان أي من هذه تساعد ولكن ما ساعدني أن تبدأ ليست صغيرة بل صغيرة جدا وبناء من هناك.
إذا كنت تريد المزيد من ثم اسمحوا لي أن أعرف وأنا سوف نحاول أن نقدم.ولكن أنا لا مسج الخبراء.