Ngăn gửi lại biểu mẫu khi làm mới HTML

cách ngăn chặn/tránh/dừng Gửi lại biểu mẫu (Resubmit) khi nhấp vào nút Làm mới trong Trình duyệt trong ASP. Dao cạo Net MVC

Vấn đề là khi nhấn nút làm mới trình duyệt hoặc các phím chức năng F5 hoặc CTRL + F5, sự kiện đã thực hiện cuối cùng lại được thực hiện

Ví dụ: nếu bạn gửi Biểu mẫu khi nhấp vào Nút và sau khi nhấp vào nút, người dùng sẽ làm mới trang thì Biểu mẫu được gửi lại và một lần nữa phương thức Hành động tương tự được gọi

Lưu ý. Dành cho người mới bắt đầu trong ASP. Net MVC, vui lòng tham khảo bài viết của tôi ASP. Hướng dẫn về Net MVC Hello World với ví dụ về Chương trình mẫu.

 

 

Hiểu vấn đề

Vấn đề là khi nhấn nút làm mới trình duyệt hoặc các phím chức năng F5 hoặc CTRL + F5, sự kiện đã thực hiện cuối cùng lại được thực hiện

Ví dụ: nếu bạn gửi Biểu mẫu khi nhấp vào Nút và sau khi nhấp vào nút, người dùng sẽ làm mới trang thì Biểu mẫu được gửi lại và một lần nữa phương thức Hành động tương tự được gọi

Hãy để chúng tôi hiểu với một ví dụ đơn giản sử dụng một dự án MVC

Bộ điều khiển

Bộ điều khiển bao gồm các phương thức Hành động sau

Phương thức hành động để xử lý thao tác GET

Bên trong phương thức Hành động này, chỉ cần trả về Chế độ xem

 

Phương thức hành động để xử lý thao tác POST

Phương thức Hành động này xử lý Gửi biểu mẫu khi nhấp vào Nút

Lưu ý. Để biết chi tiết về Form Post trong MVC, vui lòng tham khảo bài viết của tôi ASP. mạng MVC. Ví dụ Gửi biểu mẫu (Đăng).

 

Khi nhấp vào nút Gửi, giá trị của Hộp văn bản tên được nhận dưới dạng tham số

Cuối cùng, Chế độ xem được trả lại

lớp công khai HomeController. Bộ điều khiển

{

    // NHẬN. Trang chủ

    công khai ActionResult Index()

{

        return View();

}

 

    [HttpPost]

    công khai ActionResult Chỉ mục(chuỗi name)

{

        return View();

}

}

 

Lượt xem

Chế độ xem bao gồm Biểu mẫu HTML đã được tạo bằng Html. Phương thức BeginForm với các tham số sau

Tên hành động – Tên của hành động. Trong trường hợp này tên là Index.

ControllerName – Tên của Trình điều khiển. Trong trường hợp này tên là Home.

FormMethod – Nó chỉ định Phương thức biểu mẫu i. e. NHẬN hoặc ĐĂNG. Trong trường hợp này, nó sẽ được đặt thành POST.

Biểu mẫu bao gồm một Nút Gửi và khi nhấp vào Nút, Biểu mẫu sẽ được gửi

@{

    Bố cục = null;

}

 

<. LOẠI TÀI LIỆU html>

 

<html>

<đầu>

    <meta name="viewport" content="width=device-width"/>

    <tiêu đề>Chỉ mụctitle>

đầu>head>

<nội dung>

    @sử dụng (Html. BeginForm("Chỉ mục", "Trang chủ", FormMethod.Post))

{

        <đầu vào loại="văn bản" name="Name"/>

        <đầu vào loại="submit" value="Submit"/>

}

cơ thể>body>

html>html>

 

Chấp hành

Sau khi gửi Biểu mẫu, khi nhấp vào Nút Làm mới trong Trình duyệt hoặc nhấn phím F5, một cửa sổ bật lên cảnh báo sẽ xuất hiện cảnh báo chống lại việc gửi lại Biểu mẫu

Ngăn gửi lại biểu mẫu khi làm mới HTML

 

 

Dung dịch

Giải pháp rất đơn giản, trang phải được chuyển hướng đến chính nó hoặc đến một số trang khác để tránh hành vi cụ thể này

Trong ví dụ bên dưới, việc chuyển hướng được thực hiện theo cùng một phương thức Hành động để giải quyết vấn đề này

Bộ điều khiển

Bộ điều khiển bao gồm các phương thức Hành động sau

Phương thức hành động để xử lý thao tác GET

Bên trong phương thức Hành động này, chỉ cần trả về Chế độ xem

 

Phương thức hành động để xử lý thao tác POST

Phương thức Hành động này xử lý Gửi biểu mẫu khi nhấp vào Nút

Cuối cùng, một chuyển hướng được thực hiện đến phương thức Index Action

lớp công khai HomeController. Bộ điều khiển

{

    // NHẬN. Trang chủ

    công khai ActionResult Index()

{

        return View();

}

 

    [HttpPost]

    công khai ActionResult Chỉ mục (chuỗi name)

{

        //Gửi tới phương thức Hành động lập chỉ mục sẽ ngăn việc gửi lại.

        return RedirectToAction("Chỉ mục");

}

}

 

Lượt xem

Chế độ xem hoàn toàn giống nhau và không có thay đổi

@{

    Bố cục = null;

}

 

<. LOẠI TÀI LIỆU html>

 

<html>

<đầu>

    <meta name="viewport" content="width=device-width"/>

    <tiêu đề>Chỉ mụctitle>

đầu>head>

<nội dung>

    @sử dụng (Html. BeginForm("Chỉ mục", "Trang chủ", FormMethod.Post))

{

        <đầu vào loại="văn bản" name="Name"/>

        <đầu vào loại="gửi" value="Submit"/>

}

cơ thể>body>

html>html>

 

Chấp hành

Sau khi gửi Biểu mẫu, bây giờ khi nhấp vào nút Làm mới trong Trình duyệt hoặc nhấn phím F5, không có gì xảy ra

Làm cách nào để hạn chế tải lại trang trong javascript?

$(cửa sổ). on('popstate', function(event) { return true; }); rồi đưa người dùng đến trang mà bạn muốn ngăn Tải lại URL . .

Mẫu thiết kế nào sau đây ngăn việc gửi lại dữ liệu biểu mẫu?

PRG là một trong nhiều mẫu thiết kế được sử dụng trong phát triển web. Nó được sử dụng để ngăn việc gửi lại biểu mẫu do tải lại cùng một trang web sau khi gửi biểu mẫu.

Làm cách nào để ngăn việc gửi lại biểu mẫu khi trang được làm mới trong ASP NET MVC?

Sau khi gửi Biểu mẫu, khi nhấp vào Nút Làm mới trong Trình duyệt hoặc nhấn phím F5, một cửa sổ bật lên cảnh báo sẽ xuất hiện cảnh báo việc gửi lại Biểu mẫu. Giải pháp rất đơn giản, trang phải được chuyển hướng đến chính nó hoặc đến một số trang khác để tránh hành vi cụ thể này.

Nút tải lại để gửi lại là gì?

Thường có thông báo nhấn nút tải lại để gửi lại dữ liệu. Khi gặp sự cố này, trình duyệt thực sự đang tìm kiếm quyền của bạn để tải dữ liệu đã gửi trong khi làm mới trang hoặc quay lại .