将数据库信息从控制器传递到 .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>

}