Как вызвать действие из представления и вернуть его результат? - PullRequest
0 голосов
/ 08 февраля 2012

Я определил действие на моем контроллере, которое принимает целое число и возвращает строковое значение:

 public string SqlQuery(int listItemId)
        {
            return _sqlListSharePointList.GetSqlQueryFromCache(listItemId);
        }

Как я могу вызвать это действие из своего представления?Кроме того, какие еще опции у меня есть, кроме AJAX?

Я попробовал следующее, но не сработало:

$.get('/SqlReportList/SqlQuery', 1, function (data) {
                alert(data);
            });

"SqlReportList" - это имя моего контроллера.

Я также попробовал следующий код:

$. Get ('/ SqlReportList / SqlQuery / 1', function (data) {alert (data);});

Но этона производстве выдало исключение, что listItemId имеет значение null.

Должен ли я декорировать свое действие по-другому?

Я также пытался получить к нему доступ через полное имя, но с той же ошибкой:

http://localhost:4574/SqlReportList/SqlQuery/1

Спасибо,

Ответы [ 3 ]

1 голос
/ 08 февраля 2012

Если вы не хотите использовать ajax (что рекомендуется), то единственный способ вызвать метод - это обновить страницу, только если вы снова попадаете на серверную часть (контроллер) из представления.

0 голосов
/ 29 июля 2013

Известен ли параметр во время рендеринга окружающей страницы?

Если это так (и я правильно понял ваш вопрос), тогда вы можете использовать Html.RenderAction. Смотри http://haacked.com/archive/2009/11/17/aspnetmvc2-render-action.aspx

Если нет, то вы действительно можете использовать только AJAX или полную перезагрузку страницы. Чтобы получить правильный URL-адрес для AJAX, вы должны иметь возможность использовать Url.Action с некоторым значением заполнителя.

Проект T4MVC предлагает строго типизированную поддержку различных вещей, включая URL-адреса действий, даже поддержку явных заполнителей для кода Javascript. См. Раздел 2.2.2 http://t4mvc.codeplex.com/documentation

0 голосов
/ 08 февраля 2012
    $.get('/SqlReportList/SqlQuery', { "listItemId": listItemId }, function (data) {
         $('#tbSqlQuery').text(data); }
         ); 
...