Бритва mvc3 + jquery + UrlAction + PartialViews - PullRequest
5 голосов
/ 23 февраля 2011

У меня вопрос по поводу jQuery + Razor. Я хочу создать переменную javascript, используя razor с @ Url.Action, и атрибуты html будут значениями входных данных. Как это:

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");

Как я могу это сделать?

Это то же самое, что ниже?
var url = "/PartialAccount/Links/?beginDate=" + d1 + "&endDate=" + d2;

Ответы [ 2 ]

10 голосов
/ 23 февраля 2011

Вы должны использовать метод load, предложенный InfernalBadger:

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

, поскольку он будет правильно кодировать параметры в d1 и d2.Но только если вы можете передавать параметры как часть строки запроса, а не тогда, когда они должны быть частью самого URL.

Таким образом, вы можете использовать, если хотите, чтобы ваш URL был:

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

(обратите внимание, что / в дате будут закодированы)

Вы не можете использовать это, если хотите, чтобы ваш URL был:

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

Метод @Url,с параметрами beginDate и endData, не работает, потому что это выполняется на сервере перед отправкой страницы в браузер.

И ваш метод с использованием оператора + завершается неудачно, пользователь вводит "special"символы »в полях ввода (например, тире /).

4 голосов
/ 23 февраля 2011

Я бы передал два значения через параметр данных load (), если вы хотите получить значения из элементов dom?

$("#links").fadeOut("slow").load(url, { beginDate: d1, endDate: d2}).fadeIn("slow");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...