[英]passing model to RedirectToAction without using session or 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";
}
有替代方法吗?
我相信您遇到编译错误。 TempData
是ControllerBase
的属性。 因此,您不能在控制器类之外使用它。
请参阅此链接:
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.