Здравствуйте. В контролере у меня есть два метода с атрибутами 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. Знаю что много костылей в коде и довольно плохой нейминг, поэтому был рад выслушать вашу критику
Заранее спасибо