Controller trong ASP.NET MVC

Trong phần này, bạn sẽ tìm hiểu về Controller trong ASP.NET MVC.

Controller trong kiến ​​trúc MVC xử lý mọi URL yêu cầu đến. Controller là một lớp, xuất phát từ lớp cơ sở System.Web.Mvc.Controller.

Lớp controller chứa các phương thức public gọi là các phương thức hành động (action method).

Controller và phương thức hành động của nó xử lý các yêu cầu đến từ trình duyệt, lấy dữ liệu model cần thiết và trả về các phản hồi thích hợp.

Trong ASP.NET MVC, mọi tên lớp của controller phải kết thúc bằng từ “Controller” – đây là quy định bắt buộc.

Ví dụ: Controller cho trang chủ phải là HomeController và Controller cho sinh viên phải là StudentController. Ngoài ra, mỗi lớp controller phải được đặt trong thư mục Controllers của cấu trúc thư mục dự án ASP.NET MVC.

Thêm một Controller mới trong ASP.NET MVC

Bây giờ, hãy thêm một controller trống mới vào ứng dụng ASP.NET MVC của chúng ta trong Visual Studio.

Trong phần trước, chúng ta đã học cách tạo ứng dụng MVC đầu tiên của mình, ứng dụng đã có sẵn HomeController theo mặc định. Bây giờ, chúng ta sẽ tạo một controller mới là StudentController.

Tips: ASP.NET MVC sẽ đưa ra lỗi “The resource cannot be found” khi bạn không thêm từ “Controller” vào sau tên lớp của controller.

Trong Visual Studio, nhấp chuột phải vào thư mục Controllers -> chọn Add -> nhấp vào Controller..

Điều này sẽ mở hộp thoại Add Scaffold như dưới đây.

Ghi chú: Scaffold là một khung tạo mã tự động cho các ứng dụng web ASP.NET MVC. Scaffold giúp tiết kiệm thời gian bằng cách tự động tạo controller, view, v.v. trong ASP.NET MVC. Bạn có thể tạo scaffold tùy chỉnh bằng cách sử dụng các mẫu T4 theo nhu cầu của bạn.

Hộp thoại Add Scaffold chứa các mẫu khác nhau để tạo Controller mới. Chúng ta sẽ tìm hiểu về các mẫu khác sau.

Bây giờ hãy chọn “MVC 5 Controller – Empty” và nhấp vào nút Add. Nó sẽ mở hộp thoại Add Controller như hình bên dưới:

Trong hộp thoại Add Controller, nhập tên của controller. Hãy nhớ rằng, tên controller phải kết thúc bằng Controller. Hãy nhập StudentController và bấm nút Add.

Điều này sẽ tạo lớp StudentController có sẵn phương thức hành động Index trong tập tin StudentController.cs trong thư mục Controllers, như hiển thị trong ví dụ bên dưới.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MVC_BasicTutorials.Controllers
{
    public class StudentController : Controller
    {
        // GET: Student
        public ActionResult Index()
        {
            return View();
        }
    }
}
C#

Như bạn có thể thấy ở trên, lớp StudentController xuất phát từ lớp Controller. Mọi controller trong ASP.NET MVC phải xuất phát từ lớp Controller trừu tượng này.

Lớp Controller cơ sở này chứa các phương thức của trình trợ giúp có thể được sử dụng cho các mục đích khác nhau.

Bây giờ, chúng ta sẽ trả về một chuỗi gì đó từ phương thức hành động Index của StudentController ở trên.

Thay đổi kiểu trả về của phương thức hành động Index từ ActionResult thành string và trả về chuỗi ví dụ được hiển thị trong ví dụ bên dưới. Bạn sẽ tìm hiểu về ActionResult trong phần tiếp theo.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MVC_BasicTutorials.Controllers
{
    public class StudentController : Controller
    {
        // GET: Student
        public string Index()
        {
            return "This is Index action method of StudentController";
        }
    }
}
C#

Chúng ta đã xem trong phần định tuyến rằng URL yêu cầu http://localhost/student hoặc http://localhost/student/index được xử lý bởi phương thức hành động Index() của lớp StudentController được trình bày ở trên.

Vì vậy, hãy nhấn phím F5 để chạy ứng dụng và truy cập nó từ trình duyệt và bạn sẽ thấy trang sau trong trình duyệt.

Những điểm cần nhớ:

  1. Controller xử lý các URL yêu cầu đến. Định tuyến trong ASP.NET MVC gửi yêu cầu đến phương thức hành động của controller thích hợp dựa trên URL và các tuyến được cấu hình.
  2. Tất cả các phương thức public trong lớp controller được gọi là phương thức hành động.
  3. Một lớp controller phải được bắt nguồn từ lớp System.Web.Mvc.Controller.
  4. Tên lớp controller phải kết thúc bằng “Controller”.
  5. Controller mới có thể được tạo bằng các mẫu có sẵn khác nhau. Bạn cũng có thể tự tạo mẫu tùy chỉnh theo nhu cầu của mình.

Phương thức hành động

Trong phần này, bạn sẽ tìm hiểu về phương thức hành động (action method) của lớp controller.

Tất cả các phương thức public của lớp controller được gọi là phương thức hành động. Chúng giống như bất kỳ phương thức bình thường nào khác với các hạn chế sau:

  1. Phương thức hành động phải là public. Nó không thể là private hoặc protected.
  2. Phương thức hành động không thể có nạp chồng phương thức (quá tải phương thức).
  3. Phương thức hành động không thể là một phương thức static.

Sau đây là một ví dụ về phương thức hành động Index của StudentController

Như bạn có thể thấy trong hình trên, phương thức Index là một phương thức public và nó trả về ActionResult bằng phương thức View(). Phương thức View() được định nghĩa trong lớp cơ sở Controller, trả về ActionResult thích hợp.

Phương thức hành động mặc định

Mọi controller có thể có phương thức hành động mặc định theo tuyến được cấu hình trong lớp RouteConfig.

Theo mặc định, Index là một phương thức hành động mặc định cho bất kỳ controller nào, như cấu hình mặc định được trình bày ở ví dụ bên dưới.

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}/{name}",
    defaults: new 
    { 
        controller = "Home", 
        action = "Index", 
        id = UrlParameter.Optional
    });
C#

Tuy nhiên, bạn hoàn toàn có thể thay đổi tên phương thức hành động mặc định theo nhu cầu của bạn trong lớp RouteConfig.

ActionResult trong ASP.NET MVC

ASP.NET MVC bao gồm các lớp kết quả khác nhau, có thể được trả về từ một phương thức hành động.

Có các lớp kết quả đại diện cho các loại phản hồi khác nhau, chẳng hạn như: HTML, tập tin, chuỗi, json, javascript, v.v Bảng sau liệt kê tất cả các lớp kết quả có sẵn trong ASP.NET MVC.

Lớp kết quả Mô tả
ViewResult Đại diện cho HTML.
EmptyResult Đại diện cho không có phản hồi.
ContentResult Đại diện cho chuỗi ký tự.
FileContentResult/ FilePathResult/ FileStreamResult Đại diện cho nội dung của một file.
JavaScriptResult Đại diện cho một tập lệnh JavaScript.
JsonResult Đại diện cho JSON có thể được sử dụng trong AJAX.
RedirectResult Đại diện cho một chuyển hướng đến một URL mới
RedirectToRouteResult Đại diện cho một phương thức hành động khác của cùng hoặc controller khác
PartialViewResult Trả về HTML từ Partial View
HttpUnauthorizedResult Trả về trạng thái HTTP 403

Lớp ActionResult là một lớp cơ sở của tất cả các lớp kết quả ở trên, do đó nó có thể là kiểu trả về của các phương thức hành động trả về bất kỳ loại kết quả nào được liệt kê ở trên. Tuy nhiên, bạn có thể chỉ định lớp kết quả phù hợp làm kiểu trả về của phương thức hành động.

Phương thức Index() của StudentController trong hình trên sử dụng phương thức View() để trả về ViewResult (được kế thừa từ ActionResult). Phương thức View() được định nghĩa trong lớp Controller cơ sở. Nó cũng chứa các phương thức khác nhau, tự động trả về loại kết quả cụ thể như được hiển thị trong bảng dưới đây.

Lớp kết quả Mô tả Phương thức trong lớp Controller
ViewResult Đại diện cho HTML. View()
EmptyResult Đại diện cho không có phản hồi.
ContentResult Đại diện cho chuỗi ký tự. Content()
FileContentResult,
FilePathResult,
FileStreamResult
Đại diện cho nội dung của một file File()
JavaScriptResult Đại diện cho một tập lệnh JavaScript. JavaScript()
JsonResult Đại diện cho JSON có thể được sử dụng trong AJAX Json()
RedirectResult Đại diện cho một chuyển hướng đến một URL mới Redirect()
RedirectToRouteResult Đại diện cho một hành động khác của cùng hoặc khác controller RedirectToRoute()
PartialViewResult Trả về HTML của Partial View PartialView()
HttpUnauthorizedResult Trả về trạng thái HTTP 403

Như bạn có thể thấy trong bảng trên, phương thức View() trả về ViewResult, Phương thức Content() trả về chuỗi, phương thức File() trả về nội dung của tập tin, v.v.

Bạn có thể sử dụng các phương thức khác nhau được đề cập trong bảng trên để trả về các loại kết quả khác nhau từ một phương thức hành động.

Tham số của phương thức hành động

Mỗi phương thức hành động có thể có các tham số đầu vào như các phương thức bình thường. Nó có thể là kiểu dữ liệu nguyên thủy hoặc kiểu dữ liệu phức tạp như trong ví dụ dưới đây.

[HttpPost]
public ActionResult Edit(Student std)
{
    // update student to the database
    
    return RedirectToAction("Index");
}

[HttpDelete]
public ActionResult Delete(int id)
{
    // delete student from the database whose id matches with specified id

    return RedirectToAction("Index");
}
C#

Xin lưu ý rằng tham số phương thức hành động có thể là kiểu Nullable.

Theo mặc định, các giá trị cho tham số của phương thức hành động được lấy từ tập dữ liệu của yêu cầu.

Tập dữ liệu bao gồm các cặp name/values cho form data hoặc các giá trị query string hoặc các giá trị cookie.

Model binding trong ASP.NET MVC tự động ánh xạ chuỗi truy vấn URL hoặc thu thập dữ liệu biểu mẫu thành các tham số của phương thức hành động nếu cả hai có tên khớp nhau. Truy cập phần model binding để biết thêm thông tin về nó.

Những điểm cần nhớ:

  1. Tất cả các phương thức public trong lớp Controller được gọi là phương thức hành động.
  2. Phương thức hành động có những hạn chế sau.
    – Phương thức hành động phải được public. Nó không thể là private hoặc protected.
    – Phương thức hành động không thể có quá tải phương thức.
    – Phương thức hành động không thể là phương thức static.
  3. ActionResult là một lớp cơ sở của tất cả các kiểu kết quả trả về từ phương thức hành động.
  4. Lớp Controller cơ sở chứa các phương thức trả về kiểu kết quả phù hợp, ví dụ: View(), Content(), File(), JavaScript(), v.v.
  5. Phương thức hành động có thể có các tham số kiểu Nullable.

Bộ chọn hành động

Bộ chọn hành động là thuộc tính có thể được áp dụng cho các phương thức hành động. Nó giúp công cụ định tuyến chọn phương thức hành động chính xác để xử lý một yêu cầu cụ thể. MVC 5 bao gồm các thuộc tính bộ chọn hành động sau:

  1. ActionName
  2. NonAction
  3. ActionVerbs

Thuộc tính ActionName

Thuộc tính ActionName cho phép chúng ta chỉ định một tên hành động khác với tên phương thức. Hãy xem xét ví dụ sau.

public class StudentController : Controller
{
    public StudentController()
    {

    }
       
    [ActionName("find")]
    public ActionResult GetById(int id)
    {
        // get student from the database 
        return View();
    }
}
C#

Trong ví dụ trên, chúng tôi đã áp dụng thuộc tính ActioName("find") cho phương thức hành động GetById. Vì vậy, bây giờ, tên hành động là “find” thay vì “GetById”.

Phương thức hành động này sẽ được gọi khi URL là http://localhost/student/find/1 thay vì http://localhost/student/getbyid/1.

Thuộc tính NonAction

Thuộc tính NonAction chỉ định phương thức public của controller không phải là phương thức hành động.

Sử dụng thuộc tính NonAction khi bạn muốn phương thức public trong controller nhưng không muốn coi nó là phương thức hành động.

Ví dụ, phương thức public GetStudent() không thể được gọi giống như là một phương thức hành động trong ví dụ sau.

public class StudentController : Controller
{
    public StudentController()
    {

    }
   
    [NonAction]
    public Student GetStudent(int id)
    {
        return studentList.Where(s => s.StudentId == id).FirstOrDefault();
    }
}
C#

Thuộc tính ActionVerbs

Thuộc tính ActionVerbs được sử dụng khi bạn muốn kiểm soát việc lựa chọn phương thức hành động dựa trên phương thức HTTP của yêu cầu.

Ví dụ: bạn có thể định nghĩa hai phương thức hành động khác nhau có cùng tên nhưng một phương thức hành động đáp ứng yêu cầu HTTP GET và phương thức hành động khác đáp ứng yêu cầu HTTP POST.

ASP.NET MVC hỗ trợ các ActionVerbs khác nhau, chẳng hạn như HttpGet, HttpPost, HttpPut, HttpDelete, HttpOptions và HttpPatch.

Bạn có thể áp dụng các thuộc tính này cho phương thức hành động để chỉ ra phương thức HTTP của yêu cầu mà phương thức hành động hỗ trợ.

Nếu bạn không áp dụng bất kỳ thuộc tính nào thì nó sẽ coi đó là một yêu cầu GET theo mặc định.

Hình dưới đây minh họa các động từ hành động HttpGET và HttpPOST.

Bảng sau liệt kê việc sử dụng các phương thức http:

Phương thức HTTP Sử dụng
GET Để lấy thông tin từ máy chủ. Các tham số sẽ được nối vào chuỗi truy vấn.
POST Để tạo một tài nguyên mới.
PUT Để cập nhật một tài nguyên hiện có.
HEAD Giống như GET ngoại trừ máy chủ không trả về message body.
OPTIONS Đại diện một yêu cầu cung cấp thông tin về các tùy chọn liên lạc được máy chủ web hỗ trợ.
DELETE Để xóa một tài nguyên hiện có.
PATCH Để cập nhật đầy đủ hoặc một phần tài nguyên.

Truy cập W3.org để biết thêm thông tin về các phương thức HTTP.

Ví dụ sau đây cho thấy các phương thức hành động khác nhau hỗ trợ các ActionVerbs khác nhau:

public class StudentController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult PostAction()
    {
        return View("Index");
    }


    [HttpPut]
    public ActionResult PutAction()
    {
        return View("Index");
    }

    [HttpDelete]
    public ActionResult DeleteAction()
    {
        return View("Index");
    }

    [HttpHead]
    public ActionResult HeadAction()
    {
        return View("Index");
    }
       
    [HttpOptions]
    public ActionResult OptionsAction()
    {
        return View("Index");
    }
       
    [HttpPatch]
    public ActionResult PatchAction()
    {
        return View("Index");
    }
}
C#

Bạn cũng có thể áp dụng nhiều phương thức HTTP bằng thuộc tính AcceptVerbs.  Trong ví dụ sau phương thức GetAndPostAction hỗ trợ cả hai phương thức HTTP GET và HTTP POST:

[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]
public ActionResult GetAndPostAction()
{
    return RedirectToAction("Index");
}
C#

Những điểm cần nhớ:

  1. Công cụ định tuyến ASP.NET MVC sử dụng các thuộc tính bộ chọn hành động để xác định phương thức hành động nào cần gọi.
  2. Ba thuộc tính bộ chọn hành động có sẵn trong MVC 5 là:
    – ActionName
    – NonAction
    – ActionVerbs
  3. Thuộc tính ActionName được sử dụng để chỉ định tên hành động khác với tên phương thức.
  4. Thuộc tính NonAction đánh dấu phương thức public của lớp controller không phải là phương thức hành động.
  5. Thuộc tính ActionVerbs chọn phương thức hành động dựa trên các phương thức HTTP của yêu cầu, ví dụ: POST, GET, PUT, v.v.
  6. Nhiều phương thức hành động có thể có cùng tên với các ActionVerbs khác nhau. Quy tắc quá tải phương pháp được áp dụng.
  7. Nhiều ActionVerbs có thể được áp dụng cho một phương thức hành động bằng cách sử dụng thuộc tính AcceptVerbs.

213 thoughts on “Controller trong ASP.NET MVC

  1. Phone Tracker says:

    How to track the location of the other person’s phone without their knowledge? You will be able to track and monitor text messages, phone calls, location history and much more. Free Remote Tracking and Recording of Husband’s Phone Cell Phone Spy. Best Apps to Download for Free to Spy on Another Phone. https://www.xtmove.com/

  2. temp american mail says:

    Temp mail You’re so awesome! I don’t believe I have read a single thing like that before. So great to find someone with some original thoughts on this topic. Really.. thank you for starting this up. This website is something that is needed on the internet, someone with a little originality!

  3. Techno rozen says:

    Techno rozen You’re so awesome! I don’t believe I have read a single thing like that before. So great to find someone with some original thoughts on this topic. Really.. thank you for starting this up. This website is something that is needed on the internet, someone with a little originality!

  4. Ремонт телефонов says:

    Профессиональный сервисный центр по ремонту сотовых телефонов, смартфонов и мобильных устройств.
    Мы предлагаем: сервисы по ремонту телефонов
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  5. ремонт аймак в москве says:

    Профессиональный сервисный центр по ремонту ноутбуков, imac и другой компьютерной техники.
    Мы предлагаем:вызвать мастера по ремонту аймаков
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  6. TinyURL says:

    Hello, Jack speaking. I’ve bookmarked your site and make it a habit to check in daily. The information is top-notch, and I appreciate your efforts.

  7. Ремонт холодильников в Москве says:

    Профессиональный сервисный центр по ремонту холодильников и морозильных камер.
    Мы предлагаем: мастера по ремонту холодильников
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  8. ремонт бытовой техники в петербурге says:

    Профессиональный сервисный центр по ремонту бытовой техники с выездом на дом.
    Мы предлагаем:сервис центры бытовой техники петербург
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  9. ремонт айпадов в москве says:

    Профессиональный сервисный центр по ремонту радиоуправляемых устройства – квадрокоптеры, дроны, беспилостники в том числе Apple iPad.
    Мы предлагаем: ремонт квадрокоптеров
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  10. Ремонт фотоаппаратов says:

    Профессиональный сервисный центр по ремонту фото техники от зеркальных до цифровых фотоаппаратов.
    Мы предлагаем: диагностика и ремонт фотоаппаратов
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  11. сервис центры в новосибирске says:

    Профессиональный сервисный центр по ремонту бытовой техники с выездом на дом.
    Мы предлагаем:ремонт крупногабаритной техники в новосибирске
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  12. Ремонт стиральных машин в Москве says:

    Профессиональный сервисный центр по ремонту стиральных машин с выездом на дом по Москве.
    Мы предлагаем: сервисные центры по ремонту стиральных машин
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  13. ремонт техники в москве says:

    Профессиональный сервисный центр по ремонту бытовой техники с выездом на дом.
    Мы предлагаем: сервисные центры по ремонту техники в москве
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  14. Ремонт игровых приставок в Москве says:

    Профессиональный сервисный центр по ремонту игровых консолей Sony Playstation, Xbox, PSP Vita с выездом на дом по Москве.
    Мы предлагаем: ремонт игровых консолей в москве
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  15. Ремонт фотовспышек в Москве says:

    Профессиональный сервисный центр по ремонту фототехники в Москве.
    Мы предлагаем: купить в москве фотовспышку дешево
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
    Подробнее на сайте сервисного центра remont-vspyshek-realm.ru

  16. Ремонт системных блоков says:

    Профессиональный сервисный центр по ремонту компьютероной техники в Москве.
    Мы предлагаем: лучшие сервисы по ремонту компьютеров
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  17. Ремонт блоков питания в Москве says:

    Профессиональный сервисный центр по ремонту компьютерных блоков питания в Москве.
    Мы предлагаем: ремонт источников питания
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  18. Купить раковину says:

    Наткнулся на замечательный интернет-магазин, специализирующийся на раковинах и ваннах. Решил сделать ремонт в ванной комнате и искал качественную сантехнику по разумным ценам. В этом магазине нашёл всё, что нужно. Большой выбор раковин и ванн различных типов и дизайнов.
    Особенно понравилось, что они предлагают купить раковину цена. Цены доступные, а качество продукции отличное. Консультанты очень помогли с выбором, были вежливы и профессиональны. Доставка была оперативной, и установка прошла без нареканий. Очень доволен покупкой и сервисом, рекомендую!

  19. ремонт кондиционеров says:

    <a href=”https://remont-kondicionerov-wik.ru”>сколько стоит ремонт кондиционера</a>

  20. Ремонт посудомоечных машин в Москве says:

    Профессиональный сервисный центр по ремонту посудомоечных машин с выездом на дом в Москве.
    Мы предлагаем: ремонт посудомойки москва
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  21. Ремонт сетевых хранилищ в Москве says:

    Профессиональный сервисный центр по ремонту сетевых хранилищ в Москве.
    Мы предлагаем: надежный сервис ремонта сетевых хранилищ
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  22. ремонт бытовой техники в волгограде says:

    Профессиональный сервисный центр по ремонту бытовой техники с выездом на дом.
    Мы предлагаем: ремонт крупногабаритной техники в волгограде
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  23. Индексация ссылок в Google says:

    Начните массовую индексацию ссылок в Google прямо cейчас!
    Быстрая индексация ссылок имеет ключевое значение для успеха вашего онлайн-бизнеса. Чем быстрее поисковые системы обнаружат и проиндексируют ваши ссылки, тем быстрее вы сможете привлечь новую аудиторию и повысить позиции вашего сайта в результатах поиска.
    Не теряйте времени! Начните пользоваться нашим сервисом для ускоренной индексации внешних ссылок в Google и Yandex. Зарегистрируйтесь сегодня и получите первые результаты уже завтра. Ваш успех в ваших руках!

  24. сервис центры в челябинске says:

    Профессиональный сервисный центр по ремонту бытовой техники с выездом на дом.
    Мы предлагаем: сервис центры бытовой техники челябинск
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  25. ремонт телефонов в москве says:

    Сломался телефон, думал покупать новый, но решил попробовать отремонтировать. Обратился в этот сервисный центр и не пожалел. Профессионалы своего дела быстро восстановили мой телефон. Рекомендую посетить их сайт: сайт ремонт телефонов.

  26. Sportsurge says:

    Sportsurge This is really interesting, You’re a very skilled blogger. I’ve joined your feed and look forward to seeking more of your magnificent post. Also, I’ve shared your site in my social networks!

  27. sergioramoscskn says:

    Descubre los aspectos mas personales de Sergio Ramos | Descubre la vida fuera de las canchas de Sergio Ramos | Informate sobre los detalles de la vida privada de Sergio Ramos | Informate sobre los momentos mas destacados de Ramos en la seleccion | Informate sobre los logros de Ramos en el PSG y La Liga | Explora la influencia de Ramos en el futbol europeo | Conoce los titulos de Ramos y sus momentos iconicos | Explora la historia de Ramos en el futbol y sus logros | Descubre los aspectos personales y profesionales de Ramos, historia de Sergio Ramos Historia de Ramos.

  28. mostbetbvkn says:

    Играйте в лучшем онлайн казино Казахстана – Мостбет | Скачайте приложение Мостбет для удобного доступа к ставкам | Получите лучшие шансы и высокие коэффициенты на Мостбет | Весь спектр казино игр доступен в приложении Мостбет | Используйте актуальные промокоды на Мостбет | Найдите выгодные ставки на спорт в Казахстане с Мостбет | Пользуйтесь всеми функциями мобильного приложения Мостбет | Играйте в слоты и выигрывайте реальные деньги на Мостбет | Лучшие бонусы и акции на официальном сайте Мостбет, Mostbet зеркало Mostbet рабочее зеркало.

  29. paulpogbaoqkn says:

    Averigua datos interesantes de la familia de Pogba | Lee sobre los contratos y transferencias de Pogba | Lee sobre los momentos mas destacados de Pogba en Juventus | Lee la biografia completa de Paul Pogba | Descubre mas sobre la infancia y familia de Pogba | Explora la carrera deportiva de Pogba y sus retos | Informate sobre los retos y exitos de Pogba en su vida | Descubre el papel de Pogba en el equipo de Francia | Explora los momentos clave en la vida de Pogba, hermano de Pogba Pogba hermano.

  30. mostbetrqkn says:

    Играйте в лучшем онлайн казино Казахстана – Мостбет | Здесь можно найти самые популярные слоты и игры – на Мостбет | Мостбет – это ваш идеальный выбор для азартных игр | Простая регистрация на Мостбет с бонусом за первое пополнение | Мостбет – ваш выбор для ставок и развлечений | Быстрая регистрация и приятные бонусы на Мостбет | Популярное казино для игроков Казахстана – Мостбет | Мостбет – это ваш путь к крупным выигрышам | Ставки и казино в одном месте – это Мостбет, онлайн казино Мостбет казино Мостбет.

  31. ronaldinhoxskn says:

    Explora los clubes donde Ronaldinho dejo su huella | Explora la vida de Ronaldinho fuera de las canchas | Descubre las contribuciones de Ronaldinho al futbol brasileno | Explora los titulos que Ronaldinho gano en su carrera | Descubre como Ronaldinho se convirtio en una superestrella del futbol | Descubre como Ronaldinho se convirtio en un fenomeno global | Conoce el perfil de Ronaldinho en sus ultimos anos | Conoce como Ronaldinho inspiro a millones con su juego | Conoce la carrera de Ronaldinho en Barcelona y Milan, logros de Ronaldinho Logros de Ronaldinho.

  32. vinijrgskn says:

    Conoce el camino de Vinicius desde Flamengo hasta el Real Madrid | Informate sobre la posicion y estilo de juego de Vinicius | Informate sobre las estadisticas de Vini Jr. en FIFA 23 | Conoce los datos sobre la posicion y equipo de Vinicius | Descubre los exitos y desafios de Vini Jr. | Informate sobre las estadisticas y logros de Vinicius en FIFA | Conoce los momentos que han definido a Vinicius Junior | Informate sobre la nacionalidad y familia de Vinicius | Descubre como Vinicius sigue inspirando a sus fans, perfil completo de Vinicius https://vinicius-junior-es.org.

  33. marceloxgkn says:

    Informate sobre el viaje de Marcelo desde Brasil hasta ser estrella mundial | Descubre los secretos de la longevidad de Marcelo en el futbol | Descubre como Marcelo ha dejado su marca en el futbol internacional | Conoce los desafios que Marcelo ha superado en su carrera | Explora como Marcelo ha inspirado a las nuevas generaciones | Explora los hitos y records alcanzados por Marcelo | Conoce la habilidad unica de Marcelo en el juego ofensivo y defensivo | Informate sobre la preparacion fisica y mental de Marcelo | Explora los detalles del perfil de Marcelo Vieira en Transfermarkt, Marcelo Real Madrid Real Madrid Marcelo Vieira</url].

  34. mostbetkzbmkn says:

    Оцените преимущества и бонусы от Mostbet | Высокий коэффициент ставок ждет вас на Мостбет | Рекомендуем воспользоваться акциями на Мостбет для большего выигрыша | Здесь можно найти ставки на все спортивные события | Ищите выгодные условия? Мостбет – ваш выбор | Онлайн-казино Mostbet предлагает только честные игры | Выбирайте Mostbet для стабильных выигрышей и честности | Испытайте удачу и выигрыши на Mostbet каждый день | Попробуйте свои силы в казино Mostbet сегодня mostbet.

  35. mostbetmarzkn says:

    Mostbet vous offre des avantages exclusifs pour les joueurs du Maroc | Mostbet offre des options de paris pour chaque evenement sportif | Telechargez et profitez de bonus exclusifs sur Mostbet | Telechargez l’application Mostbet et jouez partout ou vous etes | Mostbet propose des promotions exclusives pour les utilisateurs marocains | Accedez a des jeux de qualite superieure sur Mostbet Maroc | Jouez a des jeux de casino varies sur Mostbet Maroc | Mostbet vous propose des promotions hebdomadaires attrayantes | Des promotions et bonus exclusifs pour les utilisateurs de Mostbet mostbet maroc mostbet maroc.

  36. mostbetmamukn says:

    Explorez des jeux varies et passionnants sur Mostbet | Telechargez Mostbet et accedez aux paris sportifs en quelques clics | Telechargez et profitez de bonus exclusifs sur Mostbet | Decouvrez les avantages de Mostbet pour les joueurs marocains | Mostbet Maroc est l’un des meilleurs sites de paris en ligne | Accedez a des jeux de qualite superieure sur Mostbet Maroc | Suivez les evenements sportifs en direct sur Mostbet Maroc | Obtenez de l’aide instantanee du support client de Mostbet | Essayez Mostbet pour une experience de jeu inoubliable mostbet maroc mostbet maroc.

  37. mostbetbrqikn says:

    Registre-se no Mostbet e ganhe bonus para comecar | Receba bonus exclusivos usando o codigo promocional Mostbet | Faca suas apostas esportivas com seguranca no Mostbet | Descubra as vantagens de apostar no Mostbet | O Mostbet oferece uma plataforma de apostas completa para todos | Jogue com seguranca e confianca no site oficial do Mostbet | O Mostbet oferece uma ampla gama de opcoes de apostas | O Mostbet oferece otimas promocoes para novos usuarios | Participe dos eventos e promocoes do Mostbet Brasil mostbet mostbet.

  38. mostbetkievwtkn says:

    Откройте мир азартных игр с Мостбет UA | Участвуйте в турнирах и выиграйте большие призы на Mostbet | Попробуйте игру Aviator на Мостбет и испытайте удачу | Загрузите Mostbet и начинайте игру прямо сейчас | Легкая регистрация и доступные бонусы на Mostbet | Откройте мир азартных игр с Mostbet и получите бонус | Откройте для себя увлекательный мир ставок с Мостбет | Загрузите Мостбет и делайте ставки прямо с телефона | Mostbet — это больше, чем просто сайт для ставок зеркало мостбет

  39. mostbetloginxnkn says:

    Насолоджуйтеся зручним інтерфейсом та великим вибором ігор в Mostbet | Mostbet – це більше, ніж просто казино, це захоплення | Отримуйте прибуток з вашими ставками на Mostbet | Більше виграшів з ексклюзивними бонусами від Mostbet | Грайте в Mostbet та отримуйте щедрі бонуси mostbet вход

  40. mostbetazifkn says:

    Mostbet bilan sportga pul tikish va kazino o‘yinlarida yutish oson | Mostbet mobil ilovasi bilan istalgan joyda o‘yinlardan bahramand bo‘ling | Mostbet O‘zbekiston bozorida yetakchi o‘yin platformasi | Mostbet saytida muntazam yangilanib turuvchi aksiyalar va bonuslar mavjud | Mostbet-da yangi o‘yinlarni sinab ko‘ring va katta yutuqlar qo‘lga kiriting mostbet o’yinlari

  41. mostbetapk#ranadom[a..z]rkn says:

    Почніть грати з мостбет і отримайте бездепозитний бонус | Отримуйте бездепозитні бонуси від mostbet казино | Бездепозитні бонуси для нових користувачів на мостбет | Отримайте бездепозитний бонус на mostbet казино | Офіційний сайт mostbet – все для вашого виграшу mostbet ua

  42. mostbetbrcasintqkn says:

    Mostbet – найкращий вибір для ставок в Україні | Реєстрація на мостбет займе лише хвилину | Легке поповнення і швидкий виграш на мостбет | Швидке завантаження додатку mostbet для iOS і Android | Офіційний сайт mostbet – безпечні ставки на спорт мостбет UA

  43. mostbetazagkn says:

    Mostbet – ishonchli onlayn kazino va sport turlari sayti | Mostbet – sportga pul tikish va kazino o‘yinlarida birinchi tanlov | Mostbet bilan o‘yinlar va pul tikish uchun qulaylik va tezkor to‘lovlar | Mostbet-da Aviator o‘yinida sinovdan o‘ting va yutib oling | Mostbet orqali yangi o‘yinlar va aksiyalardan foydalaning mostbetazcasino.com.az

  44. mostbetbgapkxukn says:

    Play the Aviator game on Mostbet and win big | Mostbet registration is fast and simple | Experience top-notch customer support with Mostbet | Win real money with Mostbet casino games | Play responsibly with Mostbet Bangladesh | Mostbet app provides everything you need for online gaming Play Aviator on Mostbet.

  45. Сервисный центр Xiaomi Москва says:

    Предлагаем услуги профессиональных инженеров офицальной мастерской.
    Еслли вы искали сервисный центр xiaomi в москве, можете посмотреть на сайте: сервисный центр xiaomi
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  46. mostbetbgapkfxkn says:

    Mostbet app delivers a user-friendly experience | Win amazing prizes with Mostbet bonuses | Experience top-notch customer support with Mostbet | Mostbet makes online betting simple and enjoyable | Mostbet Bangladesh offers fast and secure payments | Mostbet casino brings the thrill of Las Vegas to your screen Play Aviator on Mostbet.

  47. mostbdcasinoigkn says:

    Download the Mostbet app for easy access | Mostbet registration is quick and simple | Access exclusive bonuses with Mostbet registration | Bet on cricket, football, and more on Mostbet | Mostbet Bangladesh offers fast payouts and secure betting | Unlock exclusive rewards with Mostbet in Bangladesh | Sign up now to claim your welcome bonus on Mostbet Mostbet app download.

  48. Lancome says:

    Hi, i believe that i noticed you visited my web site thus i got here to “go back the prefer”.I am trying to in finding things to enhance my web site!I guess its adequate to make use of a few of your ideas!!

Leave a Reply

Your email address will not be published. Required fields are marked *