Вызов метода контроллера из представления в MVC

1

Итак, так много вопросов по этому поводу, и все же я не могу для жизни меня найти ПРОСТОЙ ответ для ПРОСТОГО вопроса.

Итак, у меня есть ASP MVC (С#) с проектом просмотра бритвы (с макетом, созданным великими людьми DevExpress) - Отлично! :)

Ситуация

У меня есть <button>, а <p> отображается на моем представлении - все хорошо.

ID кнопки (достаточно забавно) myButton, а параграф - myParagraph.

У меня также есть HomeController с простым методом

        public string updateAlerts()
        {
            return "THIS IS AN IMPORTANT PARAGRAPH";
        }

Мой вопрос:

Используя основы

<button id="myButton" onclick="myFunction()">This is a button</button>

Что мне нужно использовать для вызова этого метода?

есть много вопросов, говорящих о AJAX или JQuery - но, честно говоря, я не имею ни малейшего представления о том, как их использовать! (я идиот, хорошо?)

Поэтому я написал script (который, честно говоря, я не думаю, что это "полностью" необходимо,

<script>
    function myFunction(){
    //how do I call this method here?
    var myString = ...

    document.getElementById("myButton").innerText = myString;
    }
</script>

Может ли кто-нибудь сказать мне, как заполнить это простейшим/простым способом?

ура

редактировать

Я думал, что этот ответ поможет, но либо я просто глуп (возможно), либо не устраивает эту ситуацию (печальное лицо).

Я также не знаю, делает ли это "огромную" сделку, но этот "абзац" также расположен на одной из "панелей" (левая навигационная панель, которая должна быть уточнена) -and, так что будет видно на всех страницах система

Теги:
asp.net-mvc

3 ответа

0

Когда вы пытаетесь изменить свой внутренний текст myButton, это должно работать нормально:

<script src="/jquery.min.js"></script>

<script>
$(document).ready(function(){
    $(document).ready(function () {
        $("#myButton").click(function () {
            $("#myParagraph").load("@Url.Action("updateAlerts","Home")");
        });
    });
});
</script>
  • 0
    извините, если мой вопрос был неясен, но я хотел изменить текст myparagraph, а не myButton
  • 1
    @MrCoder изменил селектор в ответе
0

Как вы уже догадались, вам нужно будет использовать ajax.

Ajax - это группа взаимосвязанных методов веб-разработки, используемых на стороне клиента для создания асинхронных веб-приложений.

Подробнее об этом читайте в wiki.

Это означает, что различные технологии/фреймворки реализуют его по-разному, причем jquery является одним из них. Конечный результат более или менее одинаковый, связь с сервером, без запрета действий пользователей (без зависания браузера и т.д.),

Чтобы это сработало, лучше всего включить jquery в ваш взгляд:

<script src="/jquery.min.js"></script>

тогда:

<script>
$(function () {
    ('#mybutton').on('click', function(){
        $.ajax({      
            url: '@Url.Action(HomeController.updateAlerts())'      
        }).done(function(data){
           $('#myParagraph').text(data);
        });
    });
})
</script>
  • 0
    эта строка URL, похоже, не распознает HomeController - когда я добавляю путь к классу, он распознает HomeController, но не распознает метод :(
  • 0
    хорошо в зависимости от конфигурации, вы можете попробовать с этим URL 'home / updatealerts'. Но есть несколько «ловушек». Во-первых, это «волшебная» строка, означающая, что если вы переименуете свой контроллер или свое действие, оно будет повреждено, во-вторых, это работает, если маршрутизация настроена правильно, и если страница не размещена в качестве субприложения.
Показать ещё 3 комментария
0

В представлении:

<script src="/jquery.min.js"></script>

<script>
$(document).ready(function(){
$('#myButton').click(function(){
  $.get('<%= Url.Action(ControllerName.updateAlerts()) %>', function (data)
    {
      $('#myParagraph').text(data);
    })
  });
});
</script>

Также обратите внимание, что если вы используете Razor, замените <%= Url.Action(ControllerName.updateAlerts()) %> на @Url.Action(ControllerName.updateAlerts())

Ещё вопросы

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