将值从一个控制器填充到另一个控制器

时间:2013-05-17 06:49:02

标签: asp.net-mvc-2 controller populate

我有两种类型的控制器,

  • JobController
  • EmployerController

这两个控制器,详情如下,

  • Contactperson
  • ContactNumber
  • 移动电话号码
  • EmailAddress的

这两个控制器的细节相同。我保持所有价值观分开。现在我想填充从Employercontroller到Jobcontroller的详细信息。

以下是我如何将所有这些细节从组织填充到工作中。任何的想法?我已经在谷歌上搜索过这么多参考资料。

3 个答案:

答案 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)

我建议您使用ViewDataTempData在两个控制器操作之间进行通信。本文指出了两者之间的区别。

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()。