2010-05-18 4 views
1

У меня есть некоторая схема рендеринга для пользовательской разметки (a'la bbcode, но не bbcode). Так что, когда я получаю материал из БД, я тогда вызываю MyRender.ToHTML (model.text) ...Пользовательский алгоритм визуализации на стороне сервера + MVC + Ajax

Теперь, что я делаю сегодня, у меня есть только форма, и я делаю сообщение и добавляю элемент и вернуть тот же вид. Мой вопрос: как это сделать с помощью ajax? Должен ли я создать элемент управления и вернуть HTML a'la winforms? Это сексуально? Как вы это делаете? Или я должен его бросить? Возможно дублировать логику рендеринга с помощью javascript?

ответ

1

Использование jQuery - это самый простой способ выполнить это. Путь, который будет работать с MVC:

1 => Поймать форму Подавать с JQuery

$('#id_of_form').submit(function() { 
    // do stuff 

    // at the end, prevent the normal submit 
    return false; 
});

2 => Отправить данные формы на ваш контроллер, например:

// do stuff 
$.post('your_controller.asp', $(this).serialize(), function(data) { 
    // do stuff with the returned data 
});

Подробнее информация о том, как это работает: http://api.jquery.com/jQuery.post/

3 => В вашем контроллере вы видите, что форма отправлена, и вы отправляете данные в Модель, где она обрабатывается. Затем Контроллер берет представленный текст с bb-подобным кодом и форматирует его. После этого вы эхо/отобразите форматированный текст.

Все, что возвращается после вызова your_controller.asp (в данном случае это форматированный текст), будет храниться в переменной data. Затем вы можете использовать эти данные и сообщить jQuery, чтобы добавить их на страницу в определенном элементе (например, div ниже формы, отображающей то, что вы опубликовали):

// do stuff with the returned data 
$('#id_of_result_element').html(data);