将数据实体从DataService类传输到MVC中的视图

时间:2014-06-25 08:19:13

标签: asp.net asp.net-mvc-4

我正在尝试学习MVC。我在理解如何将数据从我的DataService类返回到我的视图时遇到了一些麻烦。到目前为止,我的解决方案的结构如下:

该解决方案包含两个项目和一个数据库。第一个项目是我的DataService项目,它包含我的实体模型和我的服务类AppDataService。

第二个项目是网站本身。它包含我的HomeController,一个Index视图和我的库存模型,它包含两个模型:一个Item和一个名为Catalog的项目的DB Context。

该应用程序的目标是创建一个简单的应用程序,显示库房的库存并显示用户的信息。它不适用于家庭作业,因此没有预定义的目标。我只是想自己学习MVC大会。我意识到这是一个非常基本的问题,但我有点死路一条。

这是我的代码:

AppDataServices:

public class AppDataService:IAppDataService
{
    public Inventory GetItem(string srch)
    {
        Inventory item = null;

        using (var data = new WCSDatabaseEntities())
        {
            item = data.Inventories.FirstOrDefault(x => x.Name == srch);
        }

        return item;
    }

    public List<Inventory> GetCatalog()
    {
        List<Inventory> catalog = null;

        using (var data = new WCSDatabaseEntities())
        {
            catalog = data.Inventories.ToList();
        }

        return catalog;
    }

    public void Dispose()
    {

    }
}

我的应用程序模型:

public class Item
{
    public int MediaId { get; set; }
    public string Name { get; set; }
    public int InStock { get; set; }
    public decimal Price { get; set; }
    public string Manufacturer { get; set; }
}

public class InventoryDbContext : DbContext
{
    public DbSet<Item> Catalog { get; set; }
}

目前,我没有尝试过任何工作,因此我的家庭控制器的索引操作只返回视图,并且视图当前不接受模型。任何人都可以帮助解释我如何获取返回的实体并将它们附加到模型发送到视图?提前致谢!我意识到这是一个非常基本的问题。

编辑:这是家庭控制器。

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

}

1 个答案:

答案 0 :(得分:0)

在最基本的级别,您需要以下内容:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        // Assuming you're not using an IoC container.
        AppDataService appDataService = new AppDataService();

        Inventory item = appDataService.GetItem("Albatross");

        IndexViewModel model =
            new IndexViewModel()
            {
                Name = item.Name
            };

        return View(model);
    }
}

在MVC项目的根目录中创建一个名为/ViewModels/Home的文件夹,并添加一个名为IndexViewModel的类:

public class IndexViewModel
{
    public string Name { get; set; }
}

然后在您的视图中(Index.cshtml):

@model MyNamespaceChangeMe.ViewModels.Home.IndexViewModel

<p>Here's your @Model.Name from the stock room.</p>