MVC3 визуализирует скрипты в частичном представлении - PullRequest
1 голос
/ 03 октября 2011

Надеюсь, кто-то может мне помочь с этим ..... Я создаю проект MVC3, и я не могу понять, почему мое частичное представление не может выполнять какие-либо встроенные функции javascript.Вот составленный пример, но, надеюсь, покажет принципал, которого я пытаюсь достичь ....

У меня есть список элементов в представлении, называемых Элементами.

foreach (var item in Model.SaleItems)
{ 
  <div>@Html.ActionLink((string)item.ID, "Item", new { ID = @item.ID })</div>
}

Если пользователь щелкнет один из элементов, они будут отправлены на страницу с подробной информацией о выбранном элементе.На этой странице есть меню, будет 3 варианта;детали, обзоры, изображения (каждый частичный вид).Если пользователь выбирает в меню параметр «Детали», то в части сведений будут отображаться несколько диаграмм из веб-службы, например API визуализации Google.

Вот мое частичное представление со сценарием для загрузки диаграммы:

<div>
  <h4>Details</h4>
  <div id= "detailsContainer"></div>
 </div>


<script type="text/javascript">
   $(document).ready(function () {
    google.load('visualization', '1', { packages: ['table'] });
    google.setOnLoadCallback(drawDetailsTable);
    });
    function drawDetailsTable() {
      var data = new google.visualization.DataTable();
      data.addColumn('string', '');
      data.addColumn('string', '');
      data.addRows(4);
      data.setCell(0, 0, 'Color');
    data.setCell(0, 1, '<b>@Model.Color</b>');
    data.setCell(1, 0, 'Size');
    data.setCell(1, 1, '<b>@Model.Size</b>');
    data.setCell(2, 0, 'Weight');
    data.setCell(2, 1, '<b>@Model.Weight</b>');
    data.setCell(3, 0, 'Material');
    data.setCell(3, 1, '<b>@Model.MainMaterial</b>');
    var table = new google.visualization.Table(document.getElementById('detailsContainer'));
    var options = { allowHtml: true };
    table.draw(data, options);
}

</script>

У кого-нибудь есть идеи, почему это не работает?Если я переместлю сценарий из частичного представления в представление и статически объявлю элемент в ActionResult основного представления, он будет работать, но в остальном это не так.

Заранее спасибо!

1 Ответ

0 голосов
/ 04 октября 2011

Я наконец понял это.Шуниар был прав, скрипты должны выполняться в частичных представлениях, но проблема в картах Google и API визуализации.Частичное представление будет отображаться, но функция, которая никогда не вызывалась в скрипте.Это имеет смысл, поскольку для частичных представлений нет onLoad.

google.setOnLoadCallback(drawDetailsTable);
function drawDetailsTable() {
 ....
  });

Чтобы исправить это, я просто изменил его, чтобы явно вызывать функцию при визуализации частичного представления.

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