2011-02-23 21 views
5

Tengo una pregunta acerca de jQuery + Razor .. Quiero construir una variable javascript utilizando razor con @ Url.Action y los atributos html serán los valores de las entradas. De esta manera:Razor mvc3 + jquery + UrlAction + PartialViews

var d1 = $('#d1').val();
var d2 = $('#d2').val();
var url = "@Url.Action("Links", "PartialAccount", new { beginDate = "d1", endDate = "d2" })"
$("#links").fadeOut("slow").load(url).fadeIn("slow");

¿Cómo puedo hacer esto?

¿Es lo mismo que a continuación?
var url = "/PartialAccount/Links/?beginDate=" + d1 + "&endDate=" + d2;

Respuesta

10

se debe utilizar el método propuesto por load InfernalBadger:

load('@Url.Action("Links", "PartialAccount")', { beginDate: d1, endDate: d2}) 

porque esto codificar los parámetros en d1 y d2 correctamente. Pero solo si puede pasar los parámetros como parte de la cadena de consulta, no cuando deberían ser parte de la misma url.

Así que usted puede utilizar si desea que su URL para que aparezca:

/bar/foo?beginDate=1-1-2001&endDate=2-2-2001 

(tenga en cuenta que 's en la fecha se codificarán los /)

No se puede usar esta opción si desea que su URL ser:

/bar/foo/1-1-2001/2-2-2001 

el método @Url, con los parámetros BeginDate y endData, no funciona, ya que este se ejecuta en el servidor, antes de que la página se envía al navegador.

Y su método al utilizar el operador + falla, el usuario ingresa "caracteres especiales" en los cuadros de entrada (como guiones /).

4

me lo pase a través de los dos valores del parámetro de datos de carga() si desea obtener los valores de los elementos DOM?

$("#links").fadeOut("slow").load(url, { beginDate: d1, endDate: d2}).fadeIn("slow"); 
Cuestiones relacionadas