Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET MVC 5中使用三个不相关的视图_C#_Asp.net_Asp.net Mvc_Entity Framework_Asp.net Mvc 5 - Fatal编程技术网

C# 如何在ASP.NET MVC 5中使用三个不相关的视图

C# 如何在ASP.NET MVC 5中使用三个不相关的视图,c#,asp.net,asp.net-mvc,entity-framework,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Entity Framework,Asp.net Mvc 5,我正在尝试用EF在ASP.NET MVC5上实现一个字典应用程序。以下是三种模式: 字: public int WordID { get; set; } public int WordNumber { get; set; } public string WordText { get; set; } 意思是: public int MeaningID { get; set; } public int WordNumber { get; set; } public int MeaningNumb

我正在尝试用EF在ASP.NET MVC5上实现一个字典应用程序。以下是三种模式:

字:

public int WordID { get; set; }
public int WordNumber { get; set; }
public string  WordText { get; set; }
意思是:

public int MeaningID { get; set; }
public int WordNumber { get; set; }
public int MeaningNumber { get; set; }
public string  MeaningText { get; set; }
例如:

public int ExampleID { get; set; }
public int WordNumber { get; set; }
public int MeaningNumber { get; set; }
public int ExampleNumber { get; set; }
public string  ExampleText { get; set; }

这些表中不应该有任何外键。我想做的是,当我找到一个单词时,我应该找到并显示与该单词相关的所有含义以及与正确含义相关的所有示例。我可以找到所有相关的含义和例子。但我无法在视图上显示它们。我打开了一个关于word的视图,它显示单词,但我不知道如何显示此视图或任何其他视图上的其他数据。谢谢。

假设你想上三节课。你有很多选择来实现你的目标

可以使用tuple类连接视图中的所有三个类

Word objWord = new Word(); //Your object;

Meaning objMeaning = new Meaning();

Example objExample = new Example();

var tupleModel = new Tuple<Word, Meaning, Example>(objWord, objMeaning, objExample);
return View(tupleModel); 
wordobjword=newword()//你的目标;
含义objMeaning=新含义();
示例objExample=新示例();
var tupleModel=新元组(objWord、objMeaning、objExample);
返回视图(tupleModel);
在您的视图中,您必须在顶部添加下一行

@model Tuple<Word, Meaning, Example>
@模型元组

您可以为
Word
类创建
ViewModel
,如下所示:

public class WordViewModel
{
    public Word Word { get; set; }

    public IEnumerable<Meaning> WordMeanings { get; set; }
    public IEnumerable<Example> WordExamples { get; set; }  
}
公共类WordViewModel
{
公共单词{get;set;}
公共IEnumerable词义{get;set;}
公共IEnumerable单词示例{get;set;}
}
通过word的用户输入,在控制器操作方法中,可以将数据加载到viewModel中,并将viewModel对象发送回视图


您可以根据需要设计视图(一次加载所有数据、按需加载数据等)。但方法将保持不变,即将与word相关的数据加载到viewModel对象中。

您可以创建一个包含这三个对象的viewModel,然后使用它来显示视图。此外,“这些表中不应该有任何外键”完全是胡说八道。数据结构中存在外键。否则,就没有办法将意义与单词和示例配对
WordNumber
MeaningNumber
ExampleNumber
闻起来就像外键一样。@3dd我考虑过了。但是我应该如何处理这些视图模型中的含义和示例之间的关系呢?@OndrejTucny这些表中没有包含任何关系的现有数据库。几年前就这样实施了,而且规模相当大。所以我想我无法更改它。在创建viewmodel时,在控件中,根据用户输入填写正确的部分,我确信您需要查询数据库以查找相关实体,或者在viewmodel中设置关系并在代码+1中处理它。同样按照这个方法,你可以将WordMeans和WordExamples模型传递到各自的PartialView中。非常感谢。一个问题:使用列表而不是IENumerable是否完全安全?@jason-“完全安全”,嗯,是的。。。。。但由于在将收集数据传递给视图时不打算进行更改,因此IEnumerable非常适合。使用List和IEnumerable还有其他区别。我之所以要使用List,是因为我想在WordExamples中的循环中添加数据。我认为这个清单更适合这个目的。非常感谢。