2011-09-15 32 views
13

Tôi đã kiểm tra this question và nó đã giải quyết được các vấn đề ban đầu của tôi. Nhưng tôi không muốn hiển thị một phần khi người dùng nhấp vào liên kết, tôi muốn hiển thị một phần lượt xem khi trang được tải và, có thể, hiển thị chỉ báo tiến trình trong khi chế độ xem một phần đang được tải.Hiển thị một phần Chế độ xem bằng ajax

Làm cách nào để đạt được điều đó?

Cảm ơn bạn rất nhiều vì đã đọc nội dung này.

Trả lời

43

Nếu bạn muốn tải trang và sau đó tải xem một phần thông qua ajax bạn có thể tạo một ActionMethod rằng làm điều gì đó như:

public ActionResult Create() 
{ 
    var model = new MyModel(); 

    if (Request.IsAjaxRequest()) 
    { 
      return PartialView("_Partial", model.PartialModel); 
    } 
    else 
    { 
      return View(model); 
    } 
} 

và sau đó trong trang của bạn, hãy như:

$(function(){ 

    $(document).ajaxStart(function() { 
     //show a progress modal of your choosing 
     showProgressModal('loading'); 
    }); 
    $(document).ajaxStop(function() { 
     //hide it 
     hideProgressModal(); 
    }); 

    $.ajax({ 
      url: '/controller/create', 
      dataType: 'html', 
      success: function(data) { 
      $('#myPartialContainer').html(data); 
      } 
    }); 
}); 
7

Bạn có thể hiển thị nó trong trang ban đầu bằng cách viết @Html.Partial(...).

+0

Hãy suy nghĩ @ Html.Parital không thể được sử dụng trong Ajax, jquery. – Shan

+0

@Shan: Đó là một điều phía máy chủ; nó không liên quan gì đến điều đó. – SLaks

+0

@SLaks, có vẻ như anh ta cần xem một phần để hiển thị sau khi chế độ xem chính được hiển thị (có thể để tránh xử lý ban đầu trong thời gian dài). Theo tôi biết @ Html.Partial() mà bạn đề xuất được xử lý trên máy chủ cùng với chế độ xem chính. Vì vậy, nó không giải quyết vấn đề của Mans. Ban đầu tôi cũng bị lừa bởi câu hỏi. – cnom

8

khiển

public ActionResult GetModule(string partialName){ 
    return PartialView("~/Views/Shared/"+partialName); 
} 

trên Trang Mặc định (sử dụng hoạt động jquery ajax)

<div id='mod1'>Loading...</div> 
<script type="text/javascript"> 
      $("#mod1").load("/ControllerName/GetModule?partialName=test1");   
</script> 
+0

Tôi có cần đặt định dạng tệp của 'Chế độ xem một phần' không? Giống như .cshtml –

Các vấn đề liên quan