繁体   English   中英

使用tempdata作为错误模型

[英]Using tempdata as a error model

我将TempData用于用户消息。

当我尝试执行此操作时,它告诉我TempData在当前上下文中不存在。

public class ServerMessage
{
    public void appendAlertMessage(string message, ServerMessageClass messageClass)
    {
        if(TempData["alertMessage"] == null) 
            TempData["alertMessage"] = message;
        else 
            TempData["alertMessage"] += "\n" + message;

        if(TempData["alertClass"] != ServerMessageClass.Error)
            TempData["alertClass"] = messageClass;

    }
}

public class ServerMessageClass
{
    public const string Success = "success";
    public const string Warning = "warning";
    public const string Error = "error";
}

有替代方法吗?

我相信您遇到编译错误。 TempDataControllerBase的属性。 因此,您不能在控制器类之外使用它。

请参阅此链接:

https://msdn.microsoft.com/zh-CN/library/system.web.mvc.controllerbase.tempdata(v=vs.118).aspx

根据我的理解,可以将此检查保留在Controller内部。 您可以在控制器中使用私有方法,但这不是一个好习惯。

TempData仅存在于Controller本身的上下文中。

您可能需要考虑从Controller类显式继承以公开它,或者考虑在类中将TempData设置为要返回的值(即消息)来构建消息。

忽略以下内容(这只是一个想法,但不受支持)

如果您打算对其进行编辑或进行更改,则可以考虑通过ref关键字将其作为参考传递,并通过以下方式进行更新:

 // Calling the method (assumingly from your Controller)
 ServerMessage.AppendAlertMessage(string message, ServerMessage messageClass, ref TempData);

然后,您应该可以在您的方法中访问它:

public void appendAlertMessage(string message, ServerMessageClass messageClass, ref TempDataDictionary tempData)
{
      // Update the TempData using tempData["foo"] = message, etc.
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM