كيف يمكنني تصفية البيانات في MVC partialview باستخدام مسج

StackOverflow https://stackoverflow.com/questions/1203064

سؤال

كيف يمكنني تحديث البيانات باستخدام 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);
        });

أنا لست متأكدا مما إذا كان أي من هذه تساعد ولكن ما ساعدني أن تبدأ ليست صغيرة بل صغيرة جدا وبناء من هناك.

إذا كنت تريد المزيد من ثم اسمحوا لي أن أعرف وأنا سوف نحاول أن نقدم.ولكن أنا لا مسج الخبراء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top