Método de acción de llamada en MVC con jQuery y los parámetros no funcionan

Estoy tratando de llamar a un método de acción en una aplicación MVC usando jQuery. Básicamente, lo que quiero es tomar el valor de un par de campos de entrada y llamar al método de acción haciendo clic en un botón, pasando los valores de los campos de entrada como parámetros. Pero solo obtengo el valor del parámetro “número”, no el parámetro “año”.

function selectWeek() { $('#selectWeekButton').click(function (event) { var number = $("#selectWeekId").val(); var year = $("#selectYearId").val(); var actionUrl = '' var yearUrl = actionUrl.replace('YEARPLACEHOLDER', year); var url = yearUrl.replace('WEEKPLACEHOLDER', number); alert(url); $.get(url, function (data) { alert('Test'); }); }); } 

Verifiqué la URL con una alerta, como puede ver, y parece que contiene ambos valores bien. Pero cuando verifico el valor del parámetro de año en el método de acción, es nulo.

Aquí están los campos de entrada:

 Vecka:   År:    

Y el comienzo del método de acción:

 public ActionResult Edit(string number, string year) //etc... 

Sé que esto parece algo extraño en lugar de solo campos de enlace, pero la razón es que estos campos de entrada y sus valores no son el propósito principal de esta Vista. Solo están allí para seleccionar otra semana en esta aplicación de hojas de tiempo. Y además, voy a reemplazar los campos de entrada con un calendario jQuery eventualmente, así que todavía tendré que hacer algo como esto.

Entonces, ¿cuál es la forma más fácil de hacer esto y por qué no funciona como está?

Usualmente uso el segundo parámetro jQuery del método $ .get para ingresar los parámetros de URL. Aquí hay una publicación (asp.net mvc 1 pero sigue siendo un ejemplo válido):

http://blog.bobcravens.com/2009/11/ajax-calls-to-asp-net-mvc-action-methods-using-jquery/

Prueba de esta manera:

 var number = $('#selectWeekId').val(); var year = $('#selectYearId').val(); var url = '<%: Url.Action("Edit") %>'; $.get(url, { number: number, year: year }, function (data) { alert('Test'); });