在这个项目上工作,我又被困住了。我认为我需要在侧面显示一个菜单。菜单是从表中提取的。除此之外,我还有一个问题来自另一张桌子。在这里面,会有一些建议是从另一个表中提取的。对于这个问题,我有几个输入、单选按钮和一个用于反馈的文本框,它们最终会出现在不同的表格中。所有这些都必须使用主表中的 ID 进行,这样当信息保存在结果表中时,它也知道它属于哪个主记录。可以使用 /Audit/302 调出该页面,但是当您将子菜单更改为下一个问题时,您如何获得该问题并维护 ID。对于每个问题,都会有该 ID 的条目。我已经建立了关系,这就是它的样子。
2011 年 8 月 2 日
我添加了一个 ViewModel,它从名为 Score (OK, Concern, N/A) 的表中提取复选框列表
我拥有的页面使用 ID 呈现,它从 AuditSchedules 中提取记录并检索一些信息。在布局中,我还有一个侧面菜单(部分),它呈现将选择不同部分的操作链接列表和一个 MainQuestion(部分)。我们一直在努力。由于我添加了 viewModel 来填充复选框并将文本保存到具有 AuditSchedule 和 MainQuestion 的 ID 的表中。我的问题是我要求 id 从表中为分数选择 id,它正在从 AuditSchedule 中获取 id。给我一个没有找到数据。这是我的控制器:
//get
public ActionResult _Forms(int score)
{
AuditFormEdit viewModel = new AuditFormEdit();
viewModel.ScoreInstance = _db.Scores.Single(r => r.ScoreID == score);
viewModel.InitializeScoreCheckBoxHelperList(_db.Scores.ToList());
return View(viewModel);
}
//post
[HttpPost]
public ActionResult _Forms(int score, AuditFormEdit viewModel)
{
if (ModelState.IsValid)
{
viewModel.PopulateCheckBoxsToScores();
_db.Entry(viewModel.ScoreInstance).State = System.Data.EntityState.Modified;
_db.SaveChanges();
return RedirectToAction("/");
}
else
{
return View(viewModel);
}
}
这是我的视图模型:
public class AuditFormEdit
{
public Models.Score ScoreInstance { get; set; }
public List<ScoreCardCheckBoxHelper> ScoreCardCheckBoxHelperList { get; set; }
public void InitializeScoreCheckBoxHelperList(List<Models.Score> ScoreList)
{
if (this.ScoreCardCheckBoxHelperList == null)
this.ScoreCardCheckBoxHelperList = new List<ScoreCardCheckBoxHelper>();
if (ScoreList != null
&& this.ScoreInstance != null)
{
this.ScoreCardCheckBoxHelperList.Clear();
ScoreCardCheckBoxHelper spacerProductCheckBoxHelper;
string spacerTypes =
string.IsNullOrEmpty(this.ScoreInstance.ScoreName) ?
string.Empty : this.ScoreInstance.ScoreName;
foreach (Models.Score scoreType in ScoreList)
{
spacerProductCheckBoxHelper = new ScoreCardCheckBoxHelper(scoreType);
if (spacerTypes.Contains(scoreType.ScoreName))
spacerProductCheckBoxHelper.Checked = true;
this.ScoreCardCheckBoxHelperList.Add(spacerProductCheckBoxHelper);
}
}
}
public void PopulateCheckBoxsToScores()
{
this.ScoreInstance.ScoreName = string.Empty;
var scoreType = this.ScoreCardCheckBoxHelperList.Where(x => x.Checked)
.Select<ScoreCardCheckBoxHelper, string>(x => x.ScoreName)
.AsEnumerable();
this.ScoreInstance.ScoreName = string.Join(", ", scoreType);
}
public class ScoreCardCheckBoxHelper : Models.Score
{
public bool Checked { get; set; }
public ScoreCardCheckBoxHelper() : base() { }
public ScoreCardCheckBoxHelper(Models.Score scoreCard)
{
this.ScoreID = scoreCard.ScoreID;
this.ScoreName = scoreCard.ScoreName;
}
}
}
这是拉动页面的链接和控制器,这是布局的主体:
public ActionResult Audit(int id)
{
var auditToDetail = _db.AuditSchedules.Single(r => r.AuditScheduleID == id);
return View(auditToDetail);
}
链接如下所示:
/AuditSchedule/Audit/257
需要帮助请叫我。
我使用了代码优先的方法,并且所有表都具有调用关系的模型。
谢谢你