Как получить доступ к данным элемента в Javascript, если моя модель представляет собой QueryTable в MVC3? - PullRequest
0 голосов
/ 31 января 2012

Я новичок в MVC.Я нашел этот сайт очень полезным.Но я боролся с доступом к данным модели из Javascript.Вот мой вопрос

Я знаю, что если контроллер вернет один элемент, я смогу использовать <%: Model.Name%> в разделе <script>.

Но для случая, когда в Model больше элементов, <%foreach (var item in Model) %> не будет работать в <script>, даже если оно работает в другой части представления.

Может кто-нибудь пролить мне свет на это?

Также кто-нибудь может порекомендовать хорошую книгу о MVC и Razor?

1 Ответ

0 голосов
/ 31 января 2012

Было бы полезно узнать больше о вашем Model классе. Скорее всего, у вас есть класс с какой-то коллекцией:

public class CollegeCourse
{
    public string Professor {get;set;};
    public List<Student> Students {get;set;};
}

Вы можете просмотреть эту коллекцию в коде на стороне сервера следующим образом:

<% foreach (var student in Model.Students) %>

Что касается JavaScript ... Пример, который вы привели, - это пример того, как вы бы перебрали свой List<T> и создали какой-то HTML на стороне сервера. Но к тому времени, когда ваша страница загружается в браузер, данные этой модели уже давно исчезли.

Чтобы взаимодействовать с данными модели из JavaScript, вам нужно выбрать стратегию передачи данных в браузер. Несколько идей:

  • При загрузке страницы преобразуйте данные в JSON, а затем запишите их в теги <script>.
  • Вставьте ваши данные в теги HTML, возможно, используя атрибуты data-. Затем вы можете использовать jQuery для получения значений.
  • Добавьте в контроллер действие, которое возвращает нужные вам данные в виде JSON. Затем, после загрузки вашей страницы, вы можете использовать вызов jQuery AJAX, чтобы получить данные модели и выполнить любую магию, которую вы планируете делать с ней.

Первые два варианта на самом деле не считаются хорошей практикой. Я бы порекомендовал вам взглянуть на подход AJAX. Вот быстрый пример , который показывает, как вы можете это сделать. Это не так уж сложно, и в MVC3 даже есть несколько встроенных помощников, упрощающих настройку вызова AJAX.

Если вы в целом довольны ASP.NET, тогда Professional ASP.NET MVC3 - отличная книга для знакомства с MVC и Razor.

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