我有一个控制器有两种方法:
Index()
,使用来自DB的数据加载模型。GetFile()
,返回供用户下载的文件。如果GetFile()
失败,我想返回视图,并显示错误消息。我不是将模型从View发送到控制器方法GetFile()。
我的问题是:
我的问题:有没有办法返回视图,而无需再次初始化模型(调用DB)
答案 0 :(得分:3)
您可以在View()
方法中指定视图名称:
...
if(error)
{
return View("Error");
}
return View(model);
...
在这种情况下,您必须在控制器View文件夹或Share视图文件夹中包含Error.cshtml文件。在tahat视图中,您不需要定义模型。
您还可以使用TempData
在重定向后向控制器发送错误消息:
...
if(error)
{
TempData["ErrorMessage"] = "Error";
return Redirect("Index");
}
return View(model);
...
然后在索引或布局视图中:
...
<div class="error">@TempData["ErrorMessage"]</div>
...
如果你想渲染相同的视图但没有模型,你必须在使用模型之前检查模型是否为空。
...
if(Model != null)
{
//---display model
}
else
{
<div>Error message</div>
}
...
答案 1 :(得分:1)
如果我重定向到Index(),我的错误消息会消失。
这就是你应该使用TempData:array_column()
在您的控制器中:
@TempData["ImportError"]
在索引视图中:
int_stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR IpszCmdline, int nCmdShow)