将数据库信息从控制器传递到 .NET MVC 中查看
Passing data base info from controller to view in .NET MVC
你好,我正在尝试将一些数据库信息从我的控制器传递到我的视图,但没有找到最好的方法。我正在我的控制器中填充模型,但我需要从数据库中填充这些值。我有一个名为 DataAccess 的 class,它包含我所有的查询,但不确定我应该将逻辑放在何处进行填充。我会在我的控制器中说一个 for 循环来填充值,但似乎失败了,因为我在那里声明了 SchedulerViewModel
这个想法是我的值旁边是一个单选按钮,因此选择一个单选按钮时,我可以"detect"值并使用该选项做点事。...任何建议都将不胜感激。 .
我的模特:
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 />
}
}
理想情况下,您应该有一个服务 class 来处理您的数据库访问。您不应该直接从控制器调用数据层,尽管没有什么可以阻止您这样做。为简单起见,我只是直接在控制器中调用数据访问。这个想法是,您需要在控制器级别的视图中 return 数据集合,此处为 IEnumerable,以便视图可以显示此数据。
控制器:
[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,就像我在控制器中一样。然后您会注意到我在迭代模型时引用了一个模型对象。
@foreach (var item in Model)
然后我遍历模型的每一行,以便将 table 行添加到 table。因为我们使用 Entity Framework 中的模型绑定。我们正在使用 Razor 语法。您还注意到我在最后一列的每一行都使用了操作链接。这允许我编辑、删除或提供一行数据的详细信息。但是,我需要为此调用另一个 Controller Action。例如,您有一个编辑控制器操作方法,它 return 是编辑视图的一个问题。
@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>
}
你好,我正在尝试将一些数据库信息从我的控制器传递到我的视图,但没有找到最好的方法。我正在我的控制器中填充模型,但我需要从数据库中填充这些值。我有一个名为 DataAccess 的 class,它包含我所有的查询,但不确定我应该将逻辑放在何处进行填充。我会在我的控制器中说一个 for 循环来填充值,但似乎失败了,因为我在那里声明了 SchedulerViewModel
这个想法是我的值旁边是一个单选按钮,因此选择一个单选按钮时,我可以"detect"值并使用该选项做点事。...任何建议都将不胜感激。 .
我的模特:
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 />
}
}
理想情况下,您应该有一个服务 class 来处理您的数据库访问。您不应该直接从控制器调用数据层,尽管没有什么可以阻止您这样做。为简单起见,我只是直接在控制器中调用数据访问。这个想法是,您需要在控制器级别的视图中 return 数据集合,此处为 IEnumerable,以便视图可以显示此数据。
控制器:
[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,就像我在控制器中一样。然后您会注意到我在迭代模型时引用了一个模型对象。
@foreach (var item in Model)
然后我遍历模型的每一行,以便将 table 行添加到 table。因为我们使用 Entity Framework 中的模型绑定。我们正在使用 Razor 语法。您还注意到我在最后一列的每一行都使用了操作链接。这允许我编辑、删除或提供一行数据的详细信息。但是,我需要为此调用另一个 Controller Action。例如,您有一个编辑控制器操作方法,它 return 是编辑视图的一个问题。
@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>
}