Я занимаюсь созданием службы поддержки. Сначала я использую код, поэтому я создаю несколько сценариев, которые я опишу кратко.Передать внешний ключ через форму сообщения
Этого класс является моим основным классом
public class Ticket
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
[Required]
[Display(Name = "Descrição")]
public string Description { get; set; }
public TicketStatus TicketStatus { get; set; }
public byte TicketStatusId { get; set; }
}
и я создал этот класс для обработки ответа билета с Ф.К. на билет
public class TicketAnswer
{
public int Id { get; set; }
public Ticket Ticket { get; set; }
public int TicketId { get; set; }
public string Message { get; set; }
}
Чтобы создать свою форму я создал ViewModel для обработки всех билет отвечает
public class AnswerTicketViewModel
{
//public IEnumerable<TicketStatus> TicketStatus { get; set; }
public Ticket Ticket { get; set; }
public List<TicketAnswer> TicketAnswer { get; set; }
public string Message { get; set; }
}
и передавая эту форму
@using (Html.BeginForm("SaveAnswer", "Ticket"))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(model => model.Ticket.Id)
<div class="form-group">
@Html.LabelFor(model => model.Message, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextAreaFor(model => model.Message, 10, 50, new { htmlAttributes = new { @readonly = "readonly", disabled = "disabled", @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Message, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Enviar Resposta" class="btn btn-default" />
</div>
</div>
}
это действие
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SaveAnswer(TicketAnswer ticket)
{
if (!ModelState.IsValid)
{
var ticketStatus = _context.TicketStatus.ToList();
var ticketAnswer = _context.TicketAnswer.Where(t => t.TicketId == ticket.Ticket.Id).ToList();
var viewModel = new AnswerTicketViewModel
{
Ticket = ticket.Ticket,
TicketAnswer = ticketAnswer
};
return View("AnswerTicketForm", viewModel);
}
_context.TicketAnswer.Add(ticket);
_context.SaveChanges();
return RedirectToAction("Index", "Ticket");
}
Я получаю сообщение об ошибке «The INSERT заявление конфликтные с ограничением FOREIGN KEY "FK_dbo_TicketAnswers_dbo_Tickets_TicketId", как я могу изменить, что и справиться с этим ФК? Я пробую все виды решения, может кто-нибудь дать отзыв?
Единственное значение, которое возвращает ваша форма для 'Ticket.Id'. Единственным другим элементом управления формой является «Message», но это не означает, что значение будет указано, поскольку его dsabled. И модель в вашем представлении - 'AnswerTicketViewModel', но модель в вашем методе POST -' TicketAnswer', а 'TicketAnswer' не имеет свойства с именем' TicketId', поэтому ничего не будет связано. –
Ничто в коде не имеет большого смысла. Просмотр моделей для редактирования не должен содержать модели данных (просто включите свойство 'int TicketId', а не' Ticket') и почему у него есть свойство 'List', когда вы его никогда не используете? –
Я использую, когда, но не тогда, когда я сохраняю форму, я использую ее, чтобы сделать вид со всеми ответами – Alraune