El uso de jquery post para mvc 3 no funciona cuando se implementa

Así que tengo esta aplicación MVC 3 que tiene un menú desplegable que uso para rellenar un div a través de jquery. Funciona bien localmente pero cuando lo implemento en el servidor se está redirigiendo incorrectamente. Aquí está mi jQuery:

$("#ddlCategoryMain").change(function () { $.post("/Home/Category/", { mileID: $(this).val() }, function (data) { refreshDiv($("div#main"), data); }); }); function refreshDiv(select, data) { select.html(""); select.append(data); } 

A nivel local esto funciona bien. Pero cuando se implementa en mi servidor, parece estar buscando http: // myserver / Home / Category en lugar de http: // myserver / mywebsite / Home / Category

Puedo solucionarlo simplemente agregando el nombre de mi aplicación antes de / Home / Category en la función jquery, pero eso no se siente bien …

También he intentado agregar ../, ~ /, ../../ antes de / Home pero eso no hizo ninguna diferencia.

¿Alguna solución a este problema menor? ¡Gracias!

Opción 1

Suponiendo que su método jQuery está en su opinión, puede usar Url.Action()

Genera una URL completa para un método de acción utilizando el nombre de acción y el nombre del controlador especificados.

 $("#ddlCategoryMain").change(function () { $.post('<%=Url.Action("Category", "Home")%>', { mileID: $(this).val() }, function (data) { refreshDiv($("#main"), data); }); }); 

O esto si estás utilizando la razor de afeitar.

 $("#ddlCategoryMain").change(function () { $.post('@Url.Action("Category", "Home")', { mileID: $(this).val() }, function (data) { refreshDiv($("#main"), data); }); }); 

opcion 2

Si el método está en un archivo js externo, podría declarar una variable global en su vista.

 var myUrl = '@Url.Action("Category", "Home")'; 

y luego en tu $.post

 $("#ddlCategoryMain").change(function () { $.post(myUrl , { mileID: $(this).val() }, function (data) { refreshDiv($("#main"), data); }); }); 

Estábamos enfrentando el mismo problema cuando implementamos el código en el servidor, localmente funcionó muy bien, así que esto nos ayudó mucho.

Estamos usando Razor y eso es lo que estábamos haciendo:

 $.post("/Home/PostEditProduct/", { } ... 

y ahora reemplazado con

 $.post('@Url.Action("PostEditProduct","Home")', { } ... 

y funciona.

No es una respuesta directa, pero así es como lo hago en mi sitio Zend MVC, cuando agrego mi jQuery, establezco una var como la URL base, luego en la llamada ajax, coloco la varilla delante de la ruta.

Así que para mí lo haría:

  $this->jQuery()->addOnLoad('var baseURL = "'.$this->baseUrl('').'";'); 

Entonces podría usar;

  $.post(baseURL+"/Home/Category/"......