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