Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
tonche
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 20
1

Как вызвать процедуру из cshtml по нажатию кнопки

07.08.2014, 10:31. Просмотров 4004. Ответов 10
Метки нет (Все метки)

Добрый день, мне необходимо по нажатию на кнопку в cshtml вызвать c# процедуру, которая отправит запрос на сервер
Как можно это сделать, не перезагружая и не меняя url страницы, на которой находится пользователь?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2014, 10:31
Ответы с готовыми решениями:

Как вызвать форму по нажатию кнопки с другой формы?
Народ, только начал работать с WebForm. Есть ли штатные инструменты вызова формы в виде отдельного...

Как вызвать хранимую процедуру по нажатию кнопки
Здравствуйте! У меня есть хранимая процедура, работает правильно, и есть кнопка. Что надо сделать,...

Как по нажатию на Enter вызвать процедуру
Как чтобы при нажатии клавиши пробел перейти к событию Label1_MouseClick(sender As Object, e As...

Как по нажатию кнопки вызвать редактор формул (Equation) ?
Как по нажатию кнопки вызвать редактор формул (Equation) и сохранить набранную формулу в виде gif-а...

Как вызвать процедуру по клику кнопки
подскажите как вызвать процедуру по обработке события допустим есть процедура Public Sub...

10
Masia_March
63 / 63 / 12
Регистрация: 09.08.2011
Сообщений: 116
Записей в блоге: 1
07.08.2014, 12:03 2
Привет!
В этом тебе поможет AJAX

Razor
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@{
    ViewBag.Title = "ASP.NET MVC 4 Lesson";
    Layout = "../_LayoutPage.cshtml";
}
 
<h2 class="text-center">"ASP.NET MVC 4 AJAX Lesson"</h2>
<div class="text-center" style="padding: 50px 0">
<input type="button" id="btn" style="width: 200px" class="btn btn-success text-center" value="Жмяк">
    </div>
<div style="display: none;margin: 20px 0" class="alert alert-info text-center" role="alert"></div>
@section script
{
    <script type="text/javascript">
        $(document).ready(function () {
            $('#btn').on('click', function () {
                var btn = $(this);
                btn.button('loading');
                $.ajax({
                    type: 'POST',
                    async: true,
                    cache: false,
                    url: '@Url.Action("GetInformation")',
                    success: function (data) {
                        btn.button('reset');
                        $('.alert').css('display', 'block').text(data.title);
                    }
                });
            });
        });
    </script>
}
Controller
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class HomeController : Controller
    {
        //
        // GET: /Home/
 
        public ActionResult Index()
        {
            return View();
        }
 
        [HttpPost]
        public ActionResult GetInformation()
        {
            if (Request.IsAjaxRequest())
            {
                return Json(new { title = "Hello, world!" });
            }
            return null;
        }
    }
MVCAJAXLesson.7z
1
Монфрид
1212 / 1022 / 293
Регистрация: 07.03.2012
Сообщений: 3,243
Завершенные тесты: 2
07.08.2014, 12:26 3
всё это делается и без грамма скрипта:
C#
1
2
3
4
5
6
7
@Ajax.ActionLink("Click me", "TestAjaxMethod", null,new AjaxOptions{HttpMethod = "POST"});
 
[HttpPost]
    public void TestAjaxMethod()
    {
        DoSmth();
    }
1
tonche
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 20
07.08.2014, 14:37  [ТС] 4
я написал
C#
1
2
3
4
5
6
7
@Ajax.ActionLink("Click me", "MakeCall", "HomeController", new AjaxOptions{HttpMethod = "POST"});
 
        [HttpPost]
        public void MakeCall()
        {
            string domain = GetDomainName(HttpContext.User.Identity.Name);
        }
и отвалился с ошибкой

Ошибка сервера в приложении '/'.

Не удалось найти данный ресурс.
Описание: HTTP 404. Возможно, искомый ресурс (или одна из его зависимостей) удален, получил другое имя или временно недоступен. Просмотрите следующий URL-адрес и проверьте, что он введен правильно.

Запрошенный URL: /HomeController/MakeCall

что я сделал не так?
0
Alkemona
1 / 1 / 1
Регистрация: 27.01.2014
Сообщений: 15
10.08.2014, 14:32 5
а HttpGet контролллер сделал?)
1
tonche
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 20
11.08.2014, 10:25  [ТС] 6
Проблема была в том, что я писал Homecontroller вместо просто Home, теперь у меня вызывается HttpGet Make Call, но URL меняется на ~home/makecall, хотя изначальный смысл был в том, что из этого метода выполняется запрос от сервака другому серваку, а в самом интерфейсе ничего не менялось

HTML5
1
@Ajax.ActionLink("Click me", "MakeCall", "home", new AjaxOptions{HttpMethod = "POST"});
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        [HttpPost]
        public void MakeCall()
        {
            string domain = GetDomainName(HttpContext.User.Identity.Name);
            if (domain == "alpha")
            {
            }
            if (domain == "sigma")
            {
            }
        }
 
        [HttpGet]
        public void MakeCall()
        {
            string domain = GetDomainName(HttpContext.User.Identity.Name);
            if (domain == "alpha")
            {
            }
            if (domain == "sigma")
            {
            }
        }
0
Alkemona
1 / 1 / 1
Регистрация: 27.01.2014
Сообщений: 15
12.08.2014, 14:07 7
ну и еще проблема в том что у тебя должен или get, или post запрос с параметром быть или использовать в аттрибуте httpost такую конструкцию:
C#
1
2
3
4
5
6
7
8
9
10
11
[HttpPost,ActionName("MakeCall")]
        public void ConfirmCall()
        {
            string domain = GetDomainName(HttpContext.User.Identity.Name);
            if (domain == "alpha")
            {
            }
            if (domain == "sigma")
            {
            }
        }
0
tonche
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 20
13.08.2014, 14:10  [ТС] 8
мне нужно просто запустить функцию при нажатии на ссылку/кнопку в cshtml, не открывая нового окна и никуда не redirect'ясь
как вариант - окно, затемняющее фон, поверх основного, главное - не закрывать основной сеанс
0
Монфрид
1212 / 1022 / 293
Регистрация: 07.03.2012
Сообщений: 3,243
Завершенные тесты: 2
14.08.2014, 10:50 9
tonche,
если у вас происходит переход на другую страницу при вызове ajax, значит, у вас не подключены
jquery.unobtrusive-ajax.min.js, jquery.validate.min.js, jquery.validate.unobtrusive.min.js
через nuget всё это установить можно
0
tonche
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 20
18.08.2014, 11:13  [ТС] 10
подключены все эти библиотеки, а так же unobtrusive-ajax.js, validate.js, validate-vsdoc, validate.unobtrusive.js
0
quizzer
180 / 58 / 7
Регистрация: 28.08.2012
Сообщений: 363
18.08.2014, 19:13 11
tonche, вполне возможно, то просто они неправильно подключены
0
18.08.2014, 19:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.08.2014, 19:13

Связать вызвать прорисовку формы по нажатию кнопки
здравствуйте! На форме две кнопки хочу чтобы button1_Click рисовало например элипс, а...

По нажатию на кнопку вызвать обработчик нажатия другой кнопки
Как сделать так, чтобы при нажатии на кнопку Button2, осуществлялся переход на функцию Button1, то...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru