我正在进行的项目要求我在表单上放置复选框,以便用户可能选择多个项目。我可以将这些作为布尔值放在单独的列中,但复选框值可能会更改或需要添加。所以我创建了一个包含这些复选框名称的表格,然后将它们列出来。我的问题是;我如何将这些值放入与客户一致的另一个表中。这应该如何正确处理?
该视图具有公司名称和记录 ID /AuditSchedule/details/208 我已经读到在列中放置多个值不是一个好习惯,但我还有什么其他选择?
非常感谢!
我为客户表提供的是 ProductType 字段。这与任何事情无关。还有另一个包含产品类型的表格,我想将其列为复选框。我在这两个表之间没有任何关系。对我来说似乎不应该有,但请纠正我,让我知道是否应该有。So when a check box is selected i want that value (ProductName) to be put in the customer table in the ProductType field separated with commas.
这是客户或计划表:
public class AuditSchedule
{
public virtual int AuditScheduleID { get; set; }
public virtual Nullable<DateTime> audit_completed_date { get; set; }
public virtual string gl_cmp_key { get; set; }
public virtual string audit_year { get; set; }
public virtual string ar_ship_key { get; set; }
public virtual string ar_ship_name { get; set; }
public virtual string im_adres_city { get; set; }
public virtual string im_adres_state { get; set; }
public virtual string audit_type { get; set; }
public virtual string audit_no { get; set; }
public virtual string audit_group { get; set; }
public virtual string Footage { get; set; }
public virtual string Rolling3MosFootage { get; set; }
public virtual string snp_SalesRep8 { get; set; }
public virtual string epg_sales_rep_accountable { get; set; }
public virtual string tech_service_rep { get; set; }
public virtual string audit_done_by { get; set; }
public virtual Nullable<DateTime> audit_recieved_date { get; set; }
public virtual string audit_notes { get; set; }
public virtual string audit_pdf { get; set; }
public virtual string updated { get; set; }
public virtual string hidden { get; set; }
public virtual string en_stats_key { get; set; }
public virtual string Control_ID { get; set; }
public virtual Nullable<DateTime> audit_date { get; set; }
public virtual string contacts_present { get; set; }
public virtual string audit_furnished_to { get; set; }
public virtual string spacer_type { get; set; }
}
这是产品表:
public class SpacerProduct
{
public int SpacerProductID { get; set; }
public string SpacerBrand { get; set; }
public string SpacerName { get; set; }
}
希望这可以帮助
该视图是 AuditSchedules 的表单类型编辑,只有几个地方需要填写。这部分有效。将复选框添加到视图是我迷路的地方。我创建了一个填充复选框的 ToList 的局部视图,然后将其添加到表单中。不知道如何得到表中的结果。
Tohid 的问题:我对一些事情有疑问。首先是 ViewModel,我假设这只是你的 Models 目录的命名空间,而我的只是 Models。_db.getAuditScheduleById 不在我的实体中,您解释说我可能必须采取另一种方式。对我来说它将是 _db.AuditSchedules 它出现在下拉列表中但不喜欢它所以我将其更改为更新 07/02/2012 viewModel.AuditScheduleInstance = _db.AuditSchedules.Single(r => r.AuditScheduleID == id) ;
我仍然有一个问题
_db.GetAvailableSpacerProducts()
我的实体中没有任何反映这一点的东西,我不知道如何改变它。可能类似于我在另一个中所做的更改,但不确定。
2012 年 7 月 5 日更新
这是QQAEntities:
命名空间 QQAForm.Models
{
public class QQAEntities : DbContext
{
public DbSet<AuditSchedule> AuditSchedules { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<SubCategory> SubCategories { get; set; }
public DbSet<MainQuestion> MainQuestions { get; set; }
public DbSet<Suggestion> Suggestions { get; set; }
public DbSet<DocumentLink> DocumentLinks { get; set; }
public DbSet<Audit> Audits { get; set; }
public DbSet<AuditData> AuditDatas { get; set; }
public DbSet<SpacerProduct> SpacerProducts { get; set; }
public DbSet<ScoreCard> ScoreCards { get; set; }
}
}
我的解决方案中还有另一个名为 QQAForm.Data 的项目,它仅控制与成员资格相关的所有内容的角色和安全性。希望这可以帮助。感谢您的时间和耐心。
2012 年 7 月 6 日更新
最终工作编辑:
[HttpPost]
public ActionResult Edit(AuditScheduleEdit viewModel)
{
if (ModelState.IsValid)
{
viewModel.PopulateCheckBoxsToSpacerType();
_db.Entry(viewModel.AuditScheduleInstance).State = System.Data.EntityState.Modified;
_db.SaveChanges();
return RedirectToAction("Index");
}
else
{
return View(viewModel);
}
}
2012 年 8 月 2 日更新
我已经决定我可以在这个项目的其他领域使用它。我有多个使用复选框的地方。
我试图在另一个视图上实现它,但它不起作用。它不起作用的原因是因为为了填充复选框,它会查看当前表中的 ID,以便可以更新它。这是片段:
//get
public ActionResult _Forms(int id)
{
AuditFormEdit viewModel = new AuditFormEdit();
viewModel.ScoreInstance = _db.MainAnswers.Single(r => r.MainAnswerID == id);
viewModel.InitializeScoreCheckBoxHelperList(_db.Scores.ToList());
return View(viewModel);
}
//post
[HttpPost]
public ActionResult _Forms(int id, AuditFormEdit viewModel)
{
if (ModelState.IsValid)
{
viewModel.PopulateCheckBoxsToScores();
_db.Entry(viewModel.ScoreInstance).State = System.Data.EntityState.Modified;
_db.SaveChanges();
return RedirectToAction("/");
}
else
{
return View(viewModel);
}
}
(r => r.MainAnswerID == id) 是问题所在。MainAnswer 是需要更新的表。该记录还应插入 AuditScheduleID、MainQuestionID 和从 Score 复选框填充的文本。如果我对此发表评论,我将一无所获。我真正需要的是一种方法来接受这个并用数据插入一条新记录。不知道如何更改代码来执行此操作。