2015-11-19 1 views
0

Это, вероятно, довольно простой вопрос.jQuery/ASP.Net MVC передаёт переменную id в content.load

Как передать:

var ident = $(this).attr("id");

в

content.load("@Html.Raw(Url.Action("Action", "Controller", new {id=ident}))");

Я пробовал:

... new {id="+ident+"}))");, но он не работает.

Решение

Для моей конкретной задачи, самое лучшее решение, которое я нашел, было следующее:

var ident = $(this).attr("id"); 
var route = "@Html.Raw(Url.Action("Action", "Controller"))"; 
var url = addParameterToURL(route, ident); 
content.load(url); 

С помощью метода:

function addParameterToURL(url, param) { 
    _url = url; 
    _url += (_url.split('/')[1] ? '/' : '/') + param; 
    return _url; 
} 

ответ

0

Пожалуйста чувствуйте разницу здесь между серверными кода и клиентского кода. Это:

var ident = $(this).attr("id"); 

является javascript, он выполняется на странице клиента. В то время как это:

"@Html.Raw(Url.Action("Action", "Controller"))" 

Это код на стороне сервера, который выполняется на сервере до того, как страница переходит к клиенту. Вы просто не можете смешивать их с такими вещами, как конкатенация.

Самый простой способ для вас - сохранить результат выполнения на стороне сервера в некоторой переменной, а затем добавить к нему параметр. Храните его следующим образом:

var url = "@Html.Raw(Url.Action("Action", "Controller"))"; 

А затем, находясь в JS, добавьте к нему параметр. Например, используйте this function (просто убедитесь, что вы используете URL-адрес, а не используете текущее местоположение).

+0

Мне нужно передать идентификатор методу действия в контроллере, чтобы получить правильный результат. Если я могу указать строковые литералы 'Action' и' Controller', не существует ли способа передать параметр? Является ли '' @ Html.Raw (Url.Action («Action», «Controller», new {id = ident})) «' не в основном строка? Или есть лучший способ, которым я должен называть метод контроллера, чтобы я мог отобразить частичный вид мутанта Bootstrap? –

+0

Подход, который я предложил, будет передавать идентификатор контроллеру. Он просто выдает вам URL-адрес: '/ Controller/Action? Id = 123', что именно то, что вам нужно передать 123 как id для Action. – Andrei

+0

@LeighCooper, нет, это не так, поскольку Razor распознает его и превращает в правильную строку URL-адреса при визуализации VIew – Andrei

 Смежные вопросы

  • Нет связанных вопросов^_^