根据我昨天提出的一个问题,我试图找到一种方法来动态创建更多文本框并将这些映射到我的视图模型,因此在发布到服务器时它将抓取所有动态(js)生成的文本框并发布到一个对象,例如一个列表。
举一个这个令人困惑的问题的例子:
我有一个标有“主要联系人”的文本框,工单创建者可以在此框中输入联系人姓名和电话号码。我想要做的基本上是将其切换到三个文本框。一个用于姓名、电子邮件和电话号码,而不是一个框。然后我将创建一些 javascript,它们将动态创建另外三个框以将另一个联系人添加到此列表集合中。然后,当用户提交表单以修改或创建票证时,它会将模型内的这个集合传递给控制器。然而,对于 petapoco,这有点令人困惑。让我向您展示控制器:
[HttpPost]
public ActionResult ModifyTicket(Ticket model)
{
string userString = User.Identity.Name.Replace("ONHOLD\\", "");
if (ModelState.IsValid)
{
model.CreatedDate = DateTime.Now;
model.LastUpdateBy = Util.GetEmployeeIdByName(userString);
model.LastUpdate = DateTime.Now;
model.IsComplete = false;
model.ClientString = Util.GetClientNameById(model.ClientId);
model.LocationString = Util.GetLocationNameById(model.LocationId);
model.Update();
SuccessMessage = "You have successfully updated ticket number: " + model.TicketId + " for the following client: " + model.ClientString + ".";
return RedirectToAction("Index");
}
ErrorMessage = "Woops! Something went wrong, please check back in a few moments, if the problem persists please contact development.";
return RedirectToAction("Index");
}
对此的简单回答是,出于这个确切原因,我的数据库模型将包含一个 List 对象。但是,我正在使用 PetaPoco,但我不完全确定它会如何完成。我可以手动将集合添加到我的数据库模型中,但是当我根据任何数据库架构更改重新生成模型时,我将丢失对文件所做的任何更改。
我还使用了一个部分类,我的视图使用 DataAnnotations 进行验证。然而,这个类与数据库模型相同,它只包含 DataAnnotations 以提供客户端验证。
如果有人理解我想要完成的工作,我将非常乐意提供更多信息来澄清任何缺失的部分。我只需要解决这个问题,因为我找不到解决这个问题的可靠方法!