Передать несколько значений из представления в метод действия - PullRequest
3 голосов
/ 06 марта 2012

У меня есть следующий фрагмент кода, и у меня есть 3 вопроса, связанных с ним:

JScript в представлении:

$('#page1').load('@Url.Action("QuestionList", "Tests", new { testId = Model.Test.ID , Page = 2 })');

Действие в контроллере Tests:

public ActionResult QuestionList(int testId, int Page)
    {
        // some meaningless operations here
        return PartialView("QuestionList", somevalue);
    }

(Частичное представление также представляет собой QuestionList - я пробовал с другим именем, просто чтобы быть в безопасности - и он снова не работал)

Вопросы:

  1. При использовании только testId все в порядке.Теперь, когда я добавил Page, параметр Параметры Page всегда равен нулю.
  2. Я создал модель, которая должна была заменить две переменные.Новая модель всегда равна нулю.
  3. Третий вопрос связан не с заголовком, а с текущей проблемой - как я могу передать значение из представления в метод Url.Action?Я знаю, что метод на стороне сервера и представление с JScript на клиенте, но с этой последней проблемой, которую я должен решить, я только что потерялся.

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

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

5 голосов
/ 06 марта 2012

Вы пытались проверить строку запроса в запросе к вашему Серверу, чтобы убедиться, что она не экранирована?
Это должно быть похоже на

"/Tests/QuestionList?testId=1&Page=2"

Полагаю, это сбежит:

"/Tests/QuestionList?testId=1&Page=2"

Если это проблема, используйте помощник @ Html.Raw (). См. MVC3 Url.Action генерация строки запроса для полного решения.

0 голосов
/ 06 марта 2012

Во-первых: как ты прошел свою модель? У меня была проблема, аналогичная вашей, при использовании сетки MVCContrib. Я пытался отправить данные, такие как столбец и порядок, путем создания нового объекта, но это не помогло. Вместо того, чтобы передавать объект MVCContrib.Options, например @Url.Action("QuestionList", "Tests", new { testId = Model.Test.ID , Page = 2, options = new MVCContrib.Options() }), мне пришлось отправить имя свойства класса: @Url.Action("QuestionList", "Tests", new { testId = Model.Test.ID , Page = 2, Column="xxx", Order=Ascending }) или что-то в этом роде.

Кроме того, вы, кажется, правильно создаете свою ссылку. На всякий случай поставьте «@» перед Page, чтобы быть уверенным, возможно, это зарезервированное слово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...