0
私はヘルプデスクシステムを作成する練習をしています。私は最初にコードを使用しているので、簡単に説明するスクリプトをいくつか作成します。投稿フォームを介して外部キーを渡す
このクラスは、私のメインクラス
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; }
}
であると私はすべて処理するためのviewmodelを作成し、私のフォームを作成するには、チケット
public class TicketAnswer
{
public int Id { get; set; }
public Ticket Ticket { get; set; }
public int TicketId { get; set; }
public string Message { get; set; }
}
にFKでチケット答えを処理するために、このクラスを作成しましたチケットの回答
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");
}
私はそれを変更し、このFKを処理する方法を、私はエラーFK_dbo_TicketAnswers_dbo_Tickets_TicketId 『「FOREIGN KEY制約と競合INSERT文』を取得していますか?私は誰かがチップを与えることができるすべての種類のソリューションを試してみませんか?
フォームが返す唯一の値は 'Ticket.Id'です。唯一の他のフォームコントロールは 'Message'ですが、dsabledのため値をポストしません。あなたのビューのモデルは 'AnswerTicketViewModel'ですが、あなたのPOSTメソッドのモデルは' TicketAnswer'であり、 'TicketAnswer'は' TicketId'という名前のプロパティを持たないので、何も束縛されません。 –
あなたのコードには何の意味もありません。ビューモデルにはデータモデルを含めるべきではありません( 'Ticket'ではなく' int TicketId'を含む)、それを使用しないときに 'List 'というプロパティがあるのはなぜですか? –
私はフォームを保存するときに使用しますが、すべての回答でビューを作成するために使用します – Alraune