如何创建 ViewResult 对象?
How can I create a ViewResult Object?
我使用的SDK是.net 6.0.201
控制器中有些情况需要return 404 页面。
目前我是这样实现的:
Response.StatusCode = 404;
///log something
return View("/Views/Others/Error.cshtml", 404);
但是,我需要将上面的代码添加到 return 404 页面所需的所有位置。不好管理代码。所以,我准备将它们全部移动到注入依赖项中 class 然后引用它:
public ViewResult ErrorView(HttpResponse Response)
{
Response.StatusCode = 404;
///log something
return new ViewResult("/Views/Others/Error.cshtml", 404);
}
现在,VS 报告错误:
CS1729:'ViewResult' does not contain a constructor that takes 2 arguments.
我的代码有什么问题?谢谢。
我认为要创建一个 ViewResult 对象,您需要给它一个字符串和一个 ViewDataDictionary 对象。 404 是整数而不是 ViewDataDictionary。
也许尝试像这样修改代码,如果可行请告诉我:
{
Response.StatusCode = 404;
///log something
return new ViewResult(
ViewName: "/Views/Others/Error.cshtml",
ViewData:
new ViewDataDictionary(new EmptyModelMetadataProvider(),
new ModelStateDictionary())
{
Model = 404 // If the view is expecting an integer,
// if it's not, supply it with the correct model.
}
});
}
将您的代码更改为:
public ViewResult ErrorView(HttpResponse Response)
{
Response.StatusCode = 404;
var res = new ViewResult()
{
StatusCode = 404,
ViewName = "/Views/Others/Error.cshtml"
};
return res;
}
我使用的SDK是.net 6.0.201
控制器中有些情况需要return 404 页面。
目前我是这样实现的:
Response.StatusCode = 404;
///log something
return View("/Views/Others/Error.cshtml", 404);
但是,我需要将上面的代码添加到 return 404 页面所需的所有位置。不好管理代码。所以,我准备将它们全部移动到注入依赖项中 class 然后引用它:
public ViewResult ErrorView(HttpResponse Response)
{
Response.StatusCode = 404;
///log something
return new ViewResult("/Views/Others/Error.cshtml", 404);
}
现在,VS 报告错误:
CS1729:'ViewResult' does not contain a constructor that takes 2 arguments.
我的代码有什么问题?谢谢。
我认为要创建一个 ViewResult 对象,您需要给它一个字符串和一个 ViewDataDictionary 对象。 404 是整数而不是 ViewDataDictionary。
也许尝试像这样修改代码,如果可行请告诉我:
{
Response.StatusCode = 404;
///log something
return new ViewResult(
ViewName: "/Views/Others/Error.cshtml",
ViewData:
new ViewDataDictionary(new EmptyModelMetadataProvider(),
new ModelStateDictionary())
{
Model = 404 // If the view is expecting an integer,
// if it's not, supply it with the correct model.
}
});
}
将您的代码更改为:
public ViewResult ErrorView(HttpResponse Response)
{
Response.StatusCode = 404;
var res = new ViewResult()
{
StatusCode = 404,
ViewName = "/Views/Others/Error.cshtml"
};
return res;
}