2012-01-19 58 views
5

Tôi đang gặp sự cố khi gọi hàm quá tải C# thông qua phương thức jquery post.Cách gọi hàm quá tải C# thông qua JQuery trong Asp.Net MVC 2

Tôi có hai chức năng trong C#

string func(string a) 
string func(string a, string b) 

Bây giờ khi tôi gọi hàm trong đó có một tham số trong jquery như thế này

var url = '<%= Url.Action("func", "Team") %>';     
$.post(url, { a: "test" }, function (data) { 
}); 

Nó mang lại cho tôi lỗi này

The current request for action 'func' on controller type 'TeamController' is 
ambiguous between the following action methods 

tôi muốn biết làm thế nào tôi có thể gọi các chức năng quá tải này. Im sử dụng Asp.Net MVC 2 với C#

+1

@jim phân phát tiêu đề và thẻ có thể gợi ý, câu hỏi này hầu như không có gì * chỉ làm JavaScript hoặc jQuery –

+0

Tự động sửa trên tàu đã cho tôi, "just" nên "with", cho nhận xét cuối cùng làm cho tinh thần –

+0

Tôi cũng phải đối mặt với tình trạng này nhưng trên các hình thức Web không MVC. Sử dụng null như giải pháp thay thế. –

Trả lời

7

ASP.NET MVC thường không cho phép quá tải hành động. Nếu bạn muốn làm những việc khác nhau tùy thuộc vào nội dung bạn đang gửi đến máy chủ thì bạn nên xem xét xử lý tách biệt giữa hai chức năng với các tên khác nhau (các tên hành động khác nhau và các URL khác nhau). Nếu bạn muốn giữ quá tải trong mã thì bạn vẫn nên trang trí các hàm đó với thuộc tính [ActionName("%some_name_here%")] cho chúng các tên khác nhau.

Nếu bạn muốn giữ tên hành động đơn lẻ, hãy tạo hành động "Front-End" với hai tham số ab và có mã kiểm tra hành động nếu b==null. Nếu b là null thì gọi func (a) overload, nếu không gọi func (a, b).

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