使用C#out将值传递给我的控制器是否合乎逻辑

时间:2014-04-18 13:57:40

标签: c# asp.net-mvc

我被要求在我的.Net-MVC网络应用程序(范围蠕变)中添加一些内容到我的登录过程中,当我实现时,我注意到我的控制器变得臃肿。作为一项规则,我们试图保持我们的控制器非常薄,我们的大部分繁重工作都是在服务中完成的。 这是我想要做的:

服务:

private bool IsLogonDisabled(out string enable, out string disable)
{
  try
   {
     enable = null;
     disable = null;

     DateTime enableDate;
     DateTime disableDate;

     string enableDateTime = (UnitOfWork.SystemSettingEntryRepository.GetItem(SystemSettingEntryType.SystemLoginEnableDatetime)).Value;
     string disableDateTime = (UnitOfWork.SystemSettingEntryRepository.GetItem(SystemSettingEntryType.SystemLoginDisableDatetime)).Value;

     if (DateTime.TryParse(disableDateTime, out disableDate) && DateTime.TryParse(enableDateTime, out enableDate))
     {
       disable = DisableDateTime;                              
       enable = EnableDateTime;                                
     }

     if (enableDateTime =="" & disableDateTime == "")
     {
       //compare the current date time with the window allowed  
       if (DateTime.Compare(disableDate.AddMinutes(-3), DateTime.Now) < 0)      
       {
         return true;    
       }
     }
     return false;          
   }

   catch (Exception ex)
   {
     OnServiceException(ex);
     throw;
   }

这是我的控制器:

[AllowAnonymous]
[HttpPost] // if there is a system message display it.
public ActionResult IsLogonDisabled(enableDate, disableDate)
{
  if (!staffAuthenticationService.IsLogonDisabled())
  {
    return ValidateLogon( enable, disable);  
  }
  logon.ErrorMessage = ("System logins will be disabled at " + logon.DisableDateTime + " EST for system maintenance." + "System logins will be enabled at " + logon.EnableDateTime + " EST after system maintenance is complete.");
  return Json(logon);
}

我要做的是将我在服务方法中检索的值传递给此控制器,以便我可以在错误消息中使用它。

我的问题是:尝试封装这个逻辑并将其传递给控制器​​是合乎逻辑的,通常我会保存模型但在这种情况下它是一个瞬态模型。

1 个答案:

答案 0 :(得分:1)

我建议您在服务层中有一个返回LogOn模型的方法,例如:

Class LogonModel

{
    bool IsValidLogin;
    bool IsLogonDisabled;
    string DisabledMessage;
}

然后,您可以执行服务层中的所有逻辑,并且您的视图会适当地处理返回的模型。