您好我试图将一些数据库信息从我的控制器传递到我的视图,但是找不到最好的方法。我在控制器中填充模型,但是我需要从数据库中填充这些值。我有一个名为DataAccess的类,它包含我的所有查询,但不确定我应该在哪里填充逻辑。我会在我的控制器中说一个for循环来填充值,但似乎失败了,因为我在那里声明了SchedulerViewModel
我的想法是将我的值放在单选按钮旁边,因此在选择单选按钮时,我可以“检测”#34;价值并用该选项做点什么......任何建议都会受到赞赏......
我的模特:
public class SchedulerViewModel
{
public string theValue { get; set; }
public SelectListItem[] Items { get; set; }
}
我的控制器:
public ActionResult Scheduler()
{
//DataAccess dataAccess = new DataAccess();
//for loop here???
var model = new SchedulerViewModel
{
Items = new[]
{
new SelectListItem { Value = "U", Text = "USA" }
}
};
return View(model);
}
我的观点:
@using (Html.BeginForm())
{
for (int i = 0; i < Model.Items.Count(); i++)
{
@Html.RadioButtonFor(x => x. theValue, Model.Items[i].Value, new { id = "item_" + i })
@Html.Label("item_" + i, Model.Items[i].Text)
<br />
}
}
答案 0 :(得分:1)
理想情况下,您将拥有一个处理数据库访问的服务类。您不应该直接从控制器调用数据层,尽管没有什么可以阻止您这样做。为简单起见,我只是直接在控制器中调用数据访问。我们的想法是你需要在控制器级别的View中返回一组数据,这里是一个IEnumerable,以便View可以显示这些数据。
控制器:
[HttpGet]
public ActionResult Index()
{
KnowledgeBaseEntities context = new KnowledgeBaseEntities();
IEnumerable<ISSUE> issues = context.ISSUES;
if(issues == null)
{
return HttpNotFound();
}
return View(issues);
}
查看: 正如您所看到的,我正在引用我期望从控制器获取的数据集合。
@model IEnumerable<ISSUE>
在这种情况下,它就像我在控制器中的IEnumerable一样。然后你会注意到我在迭代模型时引用了一个Model对象。
@foreach (var item in Model)
然后我循环遍历模型的每一行,以便向表中添加表行。因为我们正在使用实体框架中的模型绑定。我们正在使用Razor语法。您还注意到我正在为最后一列中的每一行使用Action Links。这允许我编辑,删除或提供一行数据的详细信息。但是,我需要为此调用另一个Controller Action。例如,您有一个编辑控制器操作方法,它将单个ISSUE返回到编辑视图。
@model IEnumerable<ISSUE>
@{
ViewBag.Title = "Knowledge Base Issues";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2 class="line">All Issues</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="flat">
<tr>
<th>@Html.DisplayNameFor(model => model.KEYWORDS)</th>
<th>@Html.DisplayNameFor(model => model.SUBJECT)</th>
<th>@Html.DisplayNameFor(model => model.DATE_ENTERED)</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>@Html.DisplayFor(modelItem => item.KEYWORDS)</td>
<td>@Html.DisplayFor(modelItem => item.SUBJECT)</td>
<td>@Html.DisplayFor(modelItem => item.DATE_ENTERED)</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ISSUE_ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ISSUE_ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ISSUE_ID })
</td>
</tr>
}