Có ba cách để bạn giải quyết vấn đề trên
- Cách HTML
- Jquery cách
- Cách ActionNameSelectorAttribution Cách
Dưới đây là một video tóm tắt tất cả ba cách tiếp cận một cách trình diễn.
https://www.facebook.com/shivprasad.koirala/ideo/vb.100002224977742/809335512483940
Cách HTML: -
Theo cách HTML, chúng ta cần tạo hai biểu mẫu và đặt nút Gửi Gửi bên trong mỗi biểu mẫu. Và mọi hành động của hình thức sẽ chỉ ra các hành động khác nhau / tương ứng. Bạn có thể thấy đoạn mã dưới đây, hình thức đầu tiên được đăng lên trên Action Action1 và hình thức thứ hai sẽ được đăng lên trên Action Action2, tùy thuộc vào nút nào mà Gửi Gửi.
<form action="Action1" method=post>
<input type=”submit” name=”Submit1”/>
</form>
<form action="Action2" method=post>
<input type=”submit” name=”Submit2”>
</form>
Cách Ajax: -
Trong trường hợp bạn là người yêu thích Ajax, tùy chọn thứ hai này sẽ kích thích bạn nhiều hơn. Theo cách Ajax, chúng ta có thể tạo hai chức năng khác nhau, Fun Fun1, và Fun Fun1, xem đoạn mã dưới đây. Các hàm này sẽ thực hiện các cuộc gọi Ajax bằng cách sử dụng JQUERY hoặc bất kỳ khung công tác nào khác. Mỗi chức năng này được liên kết với các sự kiện On On của nút của nút Gửi Gửi. Mỗi chức năng này thực hiện cuộc gọi đến các tên hành động tương ứng.
<Script language="javascript">
function Fun1()
{
$.post(“/Action1”,null,CallBack1);
}
function Fun2()
{
$.post(“/Action2”,null,CallBack2);
}
</Script>
<form action="/Action1" method=post>
<input type=submit name=sub1 onclick=”Fun2()”/>
</form>
<form action="/Action2" method=post>
<input type=submit name=sub2 onclick=”Fun1()”/>
</form>
Sử dụng hành động của ActionNameSelectorAttribution của: -
Đây là một lựa chọn tuyệt vời và sạch sẽ. Nhóm ActionNameSelectorAttribution 'là một lớp thuộc tính đơn giản nơi chúng ta có thể viết logic ra quyết định sẽ quyết định hành động nào có thể được thực thi.
Vì vậy, điều đầu tiên là trong HTML, chúng ta cần đặt tên thích hợp cho các nút gửi để xác định chúng trên máy chủ.
Bạn có thể thấy chúng tôi đã đặt các trò chơi Lưu Lưu và Xóa Xóa vào các tên nút. Ngoài ra, bạn có thể nhận thấy trong hành động chúng tôi vừa đặt tên bộ điều khiển là khách hàng của khách hàng và không phải là một tên hành động cụ thể. Chúng tôi hy vọng tên hành động sẽ được quyết định bởi nhóm ActionNameSelectorAttribution '.
<form action=”Customer” method=post>
<input type=submit value="Save" name="Save" /> <br />
<input type=submit value="Delete" name="Delete"/>
</form>
Vì vậy, khi nhấp vào nút gửi, đầu tiên, nó chạm vào thuộc tính của Action ActionSSectorector và sau đó tùy thuộc vào lần gửi nào được kích hoạt, nó sẽ gọi hành động thích hợp.
Vì vậy, bước đầu tiên là tạo một lớp kế thừa từ lớp Action ActionNameSelectorAttribution. Trong lớp này, chúng tôi đã tạo ra một thuộc tính đơn giản Tên Tên.
Chúng ta cũng cần ghi đè hàm IsValidName. Trả về true hoặc flase. Hàm này là nơi chúng ta viết logic cho dù một hành động phải được thực hiện hay không. Vì vậy, nếu hàm này trả về true thì hành động được thực thi nếu không thì không.
public class SubmitButtonSelector : ActionNameSelectorAttribute
{
public string Name { get; set; }
public override bool IsValidName(ControllerContext controllerContext, string actionName, System.Reflection.MethodInfo methodInfo)
{
// Try to find out if the name exists in the data sent from form
var value = controllerContext.Controller.ValueProvider.GetValue(Name);
if (value != null)
{
return true;
}
return false;
}
}
Trung tâm chính của chức năng trên nằm trong đoạn mã dưới đây. Bộ sưu tập của Value Valuevvider có tất cả dữ liệu đã được đăng từ biểu mẫu. Vì vậy, trước tiên, nó tìm kiếm giá trị của Tên Tên và nếu tìm thấy trong yêu cầu HTTP, nó sẽ trả về giá trị true hoặc nếu không thì nó trả về false.
var value = controllerContext.Controller.ValueProvider.GetValue(Name);
if (value != null)
{
return true;
}
return false;
Lớp thuộc tính này sau đó có thể được trang trí trên hành động tương ứng và giá trị Tên Tên tương ứng có thể được cung cấp. Vì vậy, nếu trình gửi đang nhấn hành động này và nếu tên trùng khớp với tên nút gửi HTML thì nó sẽ thực thi hành động thêm nếu không thì không.
public class CustomerController : Controller
{
[SubmitButtonSelector(Name="Save")]
public ActionResult Save()
{
return Content("Save Called");
}
[SubmitButtonSelector(Name = "Delete")]
public ActionResult Delete()
{
return Content("Delete Called");
}
}