Как использовать @ Html.PartialView («XXX») в функции Jquery?

0

У меня есть функция, которая обновляет div с необработанным HTML. Однако необработанный HTML находится в другом документе.CSHTML.

Моя функция:

function Demo(){
$('#ContainerDiv').html('@Html.Partial("MyPartialView")');
}

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

Как только я удалю @Html.PartialView("MyPartialView") и включит его в тело документа, он загрузится нормально.

Любые идеи о том, почему это не работает, или лучший способ сделать это?

Спасибо, Марк

  • 0
    Вы пытаетесь преобразовать содержимое частичного представления ASP.NET в другой элемент div, верно?
  • 0
    Да это верно.
Теги:
razor

3 ответа

2

Ваше частичное представление, вероятно, содержит разрывы строк, что приводит к многострочным строковым литералам, которые недопустимы в js. Я вижу два варианта: рендеринг частичного представления в скрытом div при загрузке страницы и переносе ее на #ContainerDiv когда вам нужно, или использовать ajax для получения контента позже.

  • 0
    Ааа, это имеет смысл!
  • 1
    Не только разрывы строк, но и все другие неэкранированные (и не закодированные) символы. Представьте себе, что вы копируете блок вывода консоли обратно в строковый литерал в вашем коде на C #. Это не сработает.
Показать ещё 1 комментарий
0

Вы можете вызвать действие, а затем заполнить контейнер с помощью полученного HTML.

Например:

Действие:

public PartialViewResult GetPartial() {
    return PartialView("MyPartialView");
}

JQuery:

$.get('@Url.Action("GetPartial")').done(function(response){
    $('#ContainerDiv').html(response)
}
0

Я всегда использовал .load() и url для частичного представления. Вот так:

function Demo(){
$('#ContainerDiv').load('@Html.Raw(Url.Action("MyPartialView"))');
}

Изменение: Забыл изменить .html() на .load()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню