Самоссылка на ASP MVC PartialView

#jquery #asp.net-mvc #asp.net-mvc-partialview

#jquery #asp.net-mvc #asp.net-mvc-partialview

Вопрос:

У меня есть функция jQuery, которая перезагружает div с помощью PartialView. Чтобы повторно использовать его в разных представлениях, мне нужно передать имя частичного представления контроллеру. Есть ли способ получить имя PartialView, в котором размещен скрипт?

Комментарии:

1. какую часть кода вы пытаетесь повторно использовать? Код jquery или метод actionresult контроллера, который переключается между частичным представлением на основе переданного вами имени представления? итак, если я правильно понял, все ли частичные представления имеют функцию jquery, которая перезагружает div?

2. Обычно я использую data: часть $.ajax запроса для передачи любого дополнительного значения, которое мне понадобится в контроллере, например data: JSON.stringify({ partialname: $('#viewname').val() })

3. Привет, Деннис, функция jQuery реагирует на щелчок по разбивке на страницы, чтобы запросить у контроллера следующую страницу. Я могу добавить параметр для передачи имени partialview, но мне было интересно, есть ли какой-либо способ, чтобы функция могла передать его самостоятельно

4. Хорошо, я понял. Возможно, вы можете рассмотреть возможность использования списка страниц для разбивки на страницы.

5. Спасибо, Деннис, я разберусь со списком страниц

Ответ №1:

Вот как вы можете получить имя частичного хостинга скрипта. Напишите это в частичном представлении, в котором размещен скрипт, и вы сможете получить доступ viewname к своей функции jquery.

 <script type="text/javascript">
    // get the view name withought the file name extension
    var viewname = '@Path.GetFileNameWithoutExtension(Server.MapPath(VirtualPath))'; 
    alert(viewname);
</script>
  

Ответ №2:

Обычно я добавляю что-то похожее на приведенное ниже:

 $('#user').on('keyup', function (e) {
    var sel = $('#dog');
    var inp = $(this).val();

    if (e.keyCode == 13) {
      e.preventDefault();
      return false;
    }

    $.post('@Url.Action("SearchList", "Admin")/'   inp, function (data) {
      sel.show();
      sel.html(data);
    });

  }).on('keydown', function (e) {
    if (e.keyCode == 13) {
      e.preventDefault();
      return false;
    }
  });
  

Посмотрите в основном на $.post(….) . Если jQuery находится на той же странице, вы можете использовать @Url.Action, чтобы указать адрес, чтобы сообщить ему перезагрузить частичное.