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; }
}
,我創建了這個類的FK辦理車票回答票
public class TicketAnswer
{
public int Id { get; set; }
public Ticket Ticket { get; set; }
public int TicketId { get; set; }
public string Message { get; set; }
}
要創建自己的狀態,我創建一個視圖模型來處理所有機票答案
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我得到一個錯誤「INSERT語句衝突與外鍵約束‘FK_dbo_TicketAnswers_dbo_Tickets_TicketId’?我嘗試各種解決方案可以有人給小費?
你的表單發回的唯一值是'Ticket.Id'。唯一的其他表單控件是'Message',但不會發佈一個值,因爲它的dsabled。您的視圖中的模型是'AnswerTicketViewModel',但是您的POST方法中的模型是'TicketAnswer'並且'TicketAnswer'沒有名爲'TicketId'的屬性,因此不會綁定任何內容。 –
你的代碼沒有什麼意義。爲了編輯的視圖模型不應該包含數據模型(只包括一個propery的'int TicketId',而不是'Ticket'),爲什麼當你從不使用它時,它有一個屬性'List'? –
我使用時,但不是當我保存表格時,我用它來製作所有答案的視圖 – Alraune