2012-01-19 15 views
5

Tengo un problema al invocar la función C# sobrecargada a través del método jquery post.Cómo llamar a la función C# sobrecargada a través de JQuery en Asp.Net MVC 2

que tienen dos funciones en C#

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

Ahora cuando llamo función que tiene un parámetro de jQuery como esto

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

Me da este error

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

I quiero saber cómo puedo llamar a estas funciones sobrecargadas. Estoy usando Asp.Net MVC 2 con C#

+1

@jim a pesar de lo que el título y la etiqueta pueden sugerir, esta pregunta tiene casi * nada * que hacer solo JavaScript o jQuery –

+0

Correcto auto en el tren, "solo" debería estar "con", para el último comentario tiene sentido –

+0

También estoy enfrentando esta situación, pero en Web Forms no MVC. Usar null como solución alternativa. –

Respuesta

7

ASP.NET MVC generalmente no permite sobrecargas de acción. Si desea hacer cosas diferentes según el contenido que está enviando al servidor, entonces debe considerar el procesamiento de separación entre dos funciones con diferentes nombres (aparentemente diferentes nombres de acción y diferentes URL). Si desea mantener la sobrecarga en el código, entonces debe decorar esas funciones con los atributos [ActionName("%some_name_here%")], que les dan diferentes nombres.

Si desea conservar el nombre de una sola acción, cree una acción "Front-End" con dos parámetros a y b y allí, en código de acción, compruebe si b==null. Si b es nulo, llame a func (a) sobrecarga, de lo contrario, llame a func (a, b).

Cuestiones relacionadas