可以在详细信息表单视图中使用mvc视图模型

时间:2017-01-20 22:23:20

标签: c# sql-server asp.net-mvc entity-framework asp.net-mvc-4

这个问题不是斯蒂芬列出的问题的DUP。你列出的那个问题是超技术的,除非你是某种编程大师,否则甚至不清楚被问到什么......我认为在你宣布它为dup之前应该考虑到这一点。寻求帮助的人会因为我正在寻找的问题甚至不知道如何解释那个问题中的问题我的先生。

是的所以我有一个mvc应用程序,我试图显示连接的数据字段...进行了搜索,互联网显示了一个示例,用户创建了一个视图模型来进行连接字段。如果您愿意,可以自己查看:http://www.c-sharpcorner.com/uploadfile/e4ff85/let-mvc-concatenate-for-you/

因此mvc应用程序首先使用数据库,向导自动构建详细信息表单视图。并且对于数据库表调用它在mvc控制器中有这个,因为我喜欢MS sqlserver视图:

原始链接是:

TEST_REQUEST tEST_REQUEST = db.TEST_REQUEST.Find(id);

在将edmx添加到以下内容后,将其更改为使用Sqlview:

VUE_TEST_DETAILS_FULL tEST_REQUEST = db.VUE_TEST_DETAILS_FULL.SingleOrDefault(r => r.RES_TEST_ID == id);

因此,当我将mvc详细信息表单更改为用户新视图模型时,我现在收到以下错误:

@model XXXXSystem.ViewModels.TEST_REQUEST_DETAILS_FULL_VM

在添加视图模型之前,这有效:

@model XXXXSystem.Models.VUE_TEST_DETAILS_FULL

但现在要做这个连接互联网指示用户 当我这样做时,建立一个视图模型失败并给出这个错误。

我是否应该忘记使用视图模型并在ms sqlserver视图中进行连接,以便更容易理解?

全部谢谢!

错误:     传递到字典中的模型项是类型的     'XXXXXXXSystem.Models.VUE_TEST_DETAILS_FULL',但此词典需要     “XXXXXXXXXSystem.ViewModels.TEST_REQUEST_DETAILS_FULL_VM”类型的模型项。

1 个答案:

答案 0 :(得分:0)

您的视图需要TEST_REQUEST_DETAILS_FULL_VM类型,但是从控制器传递的是VUE_TEST_DETAILS_FULL,因此您收到了该错误。

在此行之后的控制器中:

VUE_TEST_DETAILS_FULL tEST_REQUEST = db.VUE_TEST_DETAILS_FULL
    .SingleOrDefault(r => r.RES_TEST_ID == id);

你需要这样做:

var vm = new VUE_TEST_DETAILS_FULL();
vm.SomeProperty = tEST_REQUEST.SomeProperty;
// more properties

// pass it to the view
return View(vm); 

话虽如此,那些变量名称,我知道它们是自动生成的,因为你说你使用了向导,这些名字都是可怕的。如果我是你,我会改变它们,但如果你不熟练,那就把它留下来,因为你可能会破坏它。