asp.net-mvc можно ли получить ViewData и вставить его в функцию javascript - PullRequest
1 голос
/ 04 августа 2009

У меня есть следующий javascript, который получает HTML откуда-то и вставляет его в текстовую область для tinymce.

У меня вопрос, как в asp.net-mvc я могу получить HTML здесь и вставить его в javascript?

Я помещаю это в ViewData?

function ajaxLoad() {
        var ed = tinyMCE.get('elm1');
        // Do you ajax call here, window.setTimeout fakes ajax call
        ed.setProgressState(1); // Show progress
        window.setTimeout(function() {
            ed.setProgressState(0); // Hide progress
            ed.setContent('HTML Here');
        }, 500);
    }

Я хочу иметь что-то вроде этого ниже, но это не похоже на работу:

function ajaxLoad() {
        var ed = tinyMCE.get('elm1');
        // Do you ajax call here, window.setTimeout fakes ajax call
        ed.setProgressState(1); // Show progress
        window.setTimeout(function() {
            ed.setProgressState(0); // Hide progress
            ed.setContent(<% ViewData["test"] %>);
        }, 500);
    }

Ответы [ 3 ]

5 голосов
/ 04 августа 2009

Я думаю, что вызов ajax может подойти вам лучше, но также убедитесь, что вы пытаетесь <%= ViewData["test"], отметьте "=" после этого первого символа процента. Приведенный вами пример не будет выводить значение поля ViewData так, как оно у вас есть (может, это была просто опечатка?).

3 голосов
/ 04 августа 2009

Если вы находитесь на странице aspx или ascx, вы можете сделать это точно так же, как в вашем примере - с одним незначительным изменением:

ed.setContent(<%= ViewData["test"] %>); // the equals sign

Если вы находитесь в файле * .js, это не сработает, но вы можете установить

<input type="hidden" id="myTestData" value='<%=ViewData["test"]%>' />

в файле aspx, ascx, а затем получите значение через jQuery:

$("#myTestData").val();

Редактировать: Черт, я пропустил окончание%> в строке <input.

0 голосов
/ 04 августа 2009

Я использую это;

На мой взгляд;

$.post("/jQueryTests/jQueryAddMessageComment", { commentText: commentText }, function(newComment) {
            $("#divComments" + id.toString()).html(newComment);
        });

Если я возвращаю данные Json, то

$.post("/Articles/jQueryDownVoteArticle", { id: id }, function(votes) { document.getElementById("ArticleVotes").innerHTML = votes; }, "json");

В моем контроллере;

return PartialView("commentList", new FormViewModel { LastComment = commentText });

Важным моментом является то, как вы вернетесь к представлению. Вы также можете вернуться, как это;

return Json(new FormViewModel { LastComment = commentText });

Помните, что элемент управления, который вы заменяете html, должен иметь уникальный идентификатор.

Это то, что вы спросили?

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