我的托管公司的网络服务器一直抱怨该类未标记为 [Serializable]。
当我在本地主机上运行它时,它工作正常,没问题。一旦我将它上传到服务器,它就会要求我对其进行序列化?
示例类:
public class Notification
{
public string Message { get; set; }
public NotificationType NotificationType { get; set; }
public static Notification CreateSuccessNotification(string message)
{
return new Notification { Message = message, NotificationType = NotificationType.Success};
}
public static Notification CreateErrorNotification(string message)
{
return new Notification { Message = message, NotificationType = NotificationType.Error };
}
}
我在基本控制器中使用。当重定向到另一个方法时,这个类存储在 TempData 中,这可能是原因吗?但是,为什么在服务器上而不是在我的本地计算机上?
public abstract class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
_notifications = TempData["Notifications"] == null ? new List<Notification>() : (List<Notification>)TempData["Notifications"];
_model = TempData["Model"];
base.OnActionExecuting(filterContext);
}
protected override void OnResultExecuting(ResultExecutingContext filterContext)
{
if (filterContext.Result is RedirectToRouteResult)
{
if (_model != null)
TempData["Model"] = _model;
if (_notifications.Count > 0)
TempData["Notifications"] = _notifications;
}
base.OnResultExecuting(filterContext);
}
}
如果需要,覆盖此控制器的控制器只需添加通知和模型,然后重定向到另一个操作。