Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > ASP.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2020, 00:41   #1
asa3007
Пользователь
 
Регистрация: 25.09.2019
Сообщений: 16
По умолчанию Вызывается не тот метод в контроллере

Здравствуйте. В контролере у меня есть два метода с атрибутами HttpPost при нажатии на кнопку должен у меня выполняется метод, который отвечает за отправку формы. Вот код контроллера:
Код:
        [HttpGet]
        public IActionResult FullQuestion(int? id)
        {
            ViewBag.Des = db.Decisions.FirstOrDefault(u => u.QuestionId == id);

            var Que = db.Questions.FirstOrDefault(u => u.Id == id);

            ViewBag.Answ = from t in db.Answers.ToList()
                           where t.QuestionId == id
                           select t;

            return View(Que);
        }

        [HttpPost, ActionName("FullQuestion")]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> FullQuestion(string QuestBody, int? id)
        {
            if (ModelState.IsValid)
            {
                db.Answers.Add(new Answer { QuestionId = (int)id, AuthorAnswer = User.Identity.Name, 
                                                             BodyAnswer = QuestBody });
                await db.SaveChangesAsync();
            }
            
            return RedirectToAction("FullQuestion", "FullTheme");
        }

        [HttpPost, ActionName("DecisionConfirm")]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> DecisionConfirm(int anwId, int? id)
        {
            db.Decisions.Add(new Decision { AnswerId = anwId, QuestionId = (int)id});
            await db.SaveChangesAsync();       

            return RedirectToAction("FullQuestion", "FullTheme");
        }
Код представления:
Код:
@model Forum.Models.Question

@{
    ViewData["Title"] = "FullQuestion";
}

<div>
    <a>Автор: @Model.Author</a>
</div>
<h6>@Model.QuestionName</h6>
<a>@Model.QuestionBody</a>

<table>
    @foreach (var item in ViewBag.Answ)
    {
    <tr>
        <th>
            @if (ViewBag.Des != null)
            {
                if (ViewBag.Des.AnswerId == item.Id)
                {
                    <div style="background-color:forestgreen">
                        <div>
                            <a>Ответ</a>
                        </div>
                        <div>
                            <a>Автор: @item.AuthorAnswer</a>
                        </div>
                        <div>
                            <a>@item.BodyAnswer</a>
                        </div>
                    </div>
                }

                if (ViewBag.Des.AnswerId != item.Id)
                {
                    <div>
                        <div>
                            <a>Ответ</a>
                        </div>
                        <div>
                            <a>Автор: @item.AuthorAnswer</a>
                        </div>
                        <div>
                            <a>@item.BodyAnswer</a>
                        </div>
                    </div>
                }
            }

            else
            {
                <div>
                    <div>
                        <a>Ответ</a>
                    </div>
                    <div>
                        <a>Автор: @item.AuthorAnswer</a>
                    </div>
                    <div>
                        <a>@item.BodyAnswer</a>
                    </div>
                </div>
            }


        </th>
        <th>
            @if ((User.Identity.Name == Model.Author) & (ViewBag.Des == null))
            {
                <form asp-action="DecisionConfirm" asp-controller="FullTheme" asp-anti-forgery="true">
                    <div>
                        <input type="submit" asp-route-anwId="@item.Id" value="Отметить как решение" />
                    </div>
                </form>
            }
        </th>
    </tr>
    }
</table>

<form asp-action="FullQuestion" asp-controller="FullTheme" asp-anti-forgery="true">
    <div>
        <div>
            <label>Ответить</label><br />
            <input type="text" name="QuestBody" /><br /><br />
        </div>
        <div>
            <input type="submit" value="Ответить" />
        </div>
    </div>
</form>
P.S. Знаю что много костылей в коде и довольно плохой нейминг, поэтому был рад выслушать вашу критику

Заранее спасибо
asa3007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме 20000 рублей в месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не вызывается деструктор taras-proger77 Общие вопросы C/C++ 58 11.06.2019 06:14
Восстановление fuses в контроллере Aliens_wolfs Микроконтроллеры, робототехника, схемотехника, 3D принтеры 4 26.11.2018 15:55
Метод перебора, Метод дихотомии, Метод золотого сечения Delphi !!! OneBri Помощь студентам 0 03.10.2012 07:42
Нужен алгоритм (на любом контроллере) trafbite Фриланс 16 06.03.2012 06:55


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS