1. ASP.NET MVC 5 Hello World
  2. ASP.NET MVC 5 Create Shared Layout Razor & ViewStart
  3. ASP.NET MVC 5 Install Bootstrap
  4. ASP.NET MVC 5 Using DBContext Connect Database
  5. ASP.NET MVC 5 CRUD Tutorial With Example For Beginners
  6. Pagination For Search Results ASP.NET MVC 5
  7. ASP.NET MVC 5 Ajax Pagination For Search Results
  8. ASP.NET MVC 5 Render Sections with RenderSection
  9. ASP.NET MVC 5 Html.Partial & Html.RenderPartial
  10. ASP.NET MVC 5 Html.Action and Html.RenderAction
  11. ASP.NET MVC 5 LinQ to SQL
  12. ASP.NET MVC 5 FORM VALIDATION
  13. ASP.NET MVC 5 Partial View with Ajax Form
  14. ASP.NET MVC 5 Login and Register
  15. ASP.NET MVC 5 Repository Pattern
  16. ASP.NET MVC 5 Stored Procedure
  17. ASP.NET MVC 5 - Multiple Comment
  18. Build Angular + ASP.NET MVC 5
  19. Build Web API using Angular with ASP.NET MVC5 (Part 1)
  20. Build Web API using Angular with ASP.NET MVC 5 (Part 2)

ASP.NET MVC 5 Html.Action and Html.RenderAction

min read

Trong bài trước mình có làm một ví dụ về Html.Partial & Html.RenderPartial nay mình làm tiếp Html.Action & Html.RenderAction, bạn có thể xem lại bài trước dưới đây

Html.Action and Html.RenderAction: giữa chúng tương đối giống nhau cũng giống như Html.Partial và Html.RenderPartial, những Html.Action and Html.RenderAction được gọi như một hành động từ chế độ xem và đưa ra kết quả tại chổ trong chế độ xem.
Sự khác biệt giữa hai loại đó là Html.RenderAction sẽ hiển thị kết quả trực tiếp cho Phản hồi (sẽ hiệu quả hơn nếu hành động trả về một lượng lớn HTML) trong khi Html.Action trả về một chuỗi có kết quả.

Example

+ Html.Action: hãy tạo một hành động trong HomeController.cs và sao đó gọi hành động đó trong chế độ xem 

//HomeController.cs
		[ChildActionOnly]
        public ActionResult MenuAction()
        {
            var data = (from s in _db.Users select s).ToList();
            return PartialView("_MenuAction",data);
        }

Trong hành động trên ta có dùng ChildActionOnly ý muốn nói rằng, phương thức không được gọi thông qua URL.
Giờ ta hãy tạo một Partial _MenuAction.cshtml trong Views/Shared/_MenuAction.cshtml và triển khai code như dưới đây

//_MenuAction.cshtml
@model List<MVC5_HelloWorld.Models.User>
<table class="table table-bordered">
      @foreach (var user in Model)
      {
           <tr>
                <td>@user.Username</td>
				<td>@user.Password</td>
           </tr>
        }
</table>

Giờ ta hãy gọi Html.Action trong Index.cshtml như code sau

//Index.cshtml
 <h2>+ Html.Action</h2>
 @Html.Action("MenuAction")

+ Html.RenderAction: Tiếp tục ta hãy triển khai Html.RenderAction, cũng giống như Html.Action vậy thôi 

//HomeController.cs
		[ChildActionOnly]
        public ActionResult Menu(int idUser)
        {
            var data = _db.Users.Find(idUser);
            return PartialView("_RenderActionMenu",data);
        }
//Views/Shared/_RenderActionMenu.cshtml
@model List<MVC5_HelloWorld.Models.User>
<td>@Model.Username</td>
<td>@Model.Password</td>
//Views/Home/Index.cshtml
<table class="table table-bordered">
    @foreach (var user in ViewBag.users)
     {
         <tr>
             @{ Html.RenderAction("Menu", "Home", new { idUser = user.idUser }); }

         </tr>

      }
</table>

Bạn nhìn vào Index.cshtml bạn gọi hành động và đồng thời chèn idUser đến hành động, để Action Menu(int idUser) nhận giá trị và tìm kiếm trong table Users xong rồi trả về dữ liệu cần dùng
Vậy là xong, giữa Html.Action và Html.RenderAction tương đối giống nhau, quan trọng là cách xử lý của bạn và cách thức bạn muốn trình bài trong project của bạn
Giả sử: ta hãy gọi lồng Html.RenderAction trong Html.Action như sau:

Example:

//HomeController.cs
		[ChildActionOnly]
        public ActionResult MenuAction()
        {
            var data = (from s in _db.Users select s).ToList();
            return PartialView("_MenuAction",data);
        }
//Views/Shared/_MenuAction.cshtml
@model List<MVC5_HelloWorld.Models.User>
<table class="table table-bordered">
      @foreach (var user in Model)
      {
           <tr>
                @{ Html.RenderAction("Menu", "Home", new { idUser = user.idUser }); }

           </tr>

        }
</table>

Bạn thấy mình gọi Html.RenderAction trong hành động Html.Action, lồng với nhau, và sao đó hãy gọi Html.Action trong file Index.cshtml như sau

//Views/Home/Index.cshtml
 <h2>+ Html.Action</h2>
 @Html.Action("MenuAction")

Hình minh họa:

ASP.NET MVC 5 Html.Action and Html.RenderAction

Tag: ASP.NET MVC
x

Ủng hộ tôi bằng cách click vào quảng cáo. Để tôi có kinh phí tiếp tục phát triển Website!(Support me by clicking on the ad. Let me have the money to continue developing the Website!)