我有两种类型的控制器,
这两个控制器,详情如下,
这两个控制器的细节相同。我保持所有价值观分开。现在我想填充从Employercontroller到Jobcontroller的详细信息。
以下是我如何将所有这些细节从组织填充到工作中。任何的想法?我已经在谷歌上搜索过这么多参考资料。
答案 0 :(得分:0)
根据您提供的详细信息,可能会有多种情况需要查看。
如果您有两个控制器,则应该有单独的存储库调用来访问这些控制器中的数据。但似乎您需要在重定向到另一个操作的情况下保留数据。如果是这种情况......那么您可以使用Temp数据来存储值并访问其他控制器操作中的值,如下所示..
将值存储在员工控制器的TempData中
Organization organization = _userRepository.GetOrganizationById(LoggedInOrganization.Id);
organization.ContactPerson = collection["ContactPerson"];
organization.Email = collection["Email"];
organization.Website = collection["Website"];
organization.ContactNumber = collection["ContactNumber"];
organization.MobileNumber = collection["MobileNumber"];
TempData["Details"] = organization;
然后您可以在重定向后在另一个控制器操作中访问它。
var organisation = (Organisation) TempData["Details"];
job.ContactPerson = organisation.ConcactPerson;
job.ContactNumber = organisation..ContactNumer;
job.MobileNumber = organisation..MobileNumber;
job.EmailAddress = organisation.Email;
请记住:如果您要分配一个操作的详细信息并重定向到另一个操作,则上面的代码非常有用..请参阅Google上的Tempdata。
如果这两个控制器在任何上下文中都没有关系,那么从存储库中接收数据并使用它是一个好习惯。
如果您对此答案仍有疑问或不满意,请详细说明您的问题。
干杯
答案 1 :(得分:0)
我建议您使用ViewData
或TempData
在两个控制器操作之间进行通信。本文指出了两者之间的区别。
http://www.squaredroot.com/2007/12/20/mvc-viewdata-vs-tempdata/
主要区别在于TempData
实际上是用于2个控制器之间的通信。
Ben Scheirman : http://flux88.com/2008/01/testing-tempdata-in-asp-net-mvc/,“TempData 是一个可供会话支持的临时存储字典 一个单一的请求。在控制器之间传递消息真是太棒了。“
答案 2 :(得分:0)
只需在控制器“ A”中创建方法DATA(),并在控制器“ B”中创建控制器“ A”的对象,并在需要获取特定变量的数据时调用方法DATA()。