我是一个ASP.NET MVC初学者,目前我使用EF和数据库优先的方法来完成我的工作 . 一切顺利,每个模型都有自己的控制器和视图文件 . 当我想在视图上保存多个模型数据时,我遇到了问题 .
就我而言:
-
我有教师详细数据的ASP.NET MVC表格,另一个教师就业历史(这两个是脚手架数据库方法自动生成)
-
我想要一个视图
Create.cshtml
,其中用户输入教师详细信息和工作历史,这可以保存到他们自己的表中 . 因此,我使用元组并遵循(Multiple models in a view)和(Two models in one view in ASP MVC 3)所做的事情 . 因此,我在视图(Just界面)上成功创建了教师详细信息和工作历史记录 . -
但我不知道如何将输入保存到不同的表中(2个表:
teacher
,employmentHistory
) . 现在,当我保存输入时,没有任何反应 .
我想我需要在控制器部件上做一些事情,请给我一些关于如何做的想法 .
提前致谢
1 回答
首先,欢迎来到StackOverflow!
你是对的,你应该在控制器部分做一些事情 .
我会为视图创建一个
ViewModel
. 通过这样做,您可以以视图中所需的任何方式从数据库中投影数据 . 此外,使用此方法您不会返回完整实体,也许那里有一些敏感信息 . 您也可以从模型验证中获益 . (例如,如果在某些时候你需要从另一个实体添加另一个字段呢?)我还会为视图模型中的信息创建部分视图,并将该模型传递给局部视图,这样就可以根据需要重新使用视图 .
将数据传递给控制器时,可以传递
ViewModel
,然后将数据保存到数据库中 .由于您没有给出您的课程的模型信息,我在下面给出一个例子 . 无论哪种方式(您遵循的视图模型或元组示例),您应该更改控制器代码,类似于我在下面写的内容 .
如果您使用
ErrorHandler
作为全局过滤器,如果您没有计划从控制器返回自定义错误(例如,BusinessException或DatabaseException),则不需要try..catch
块,否则,您应该将代码包装在try..catch
块中 .