- 此问题在此处已有答案**:
ViewResult V/S ActionResult(3个答案)
3天前关闭。
我是ASP.NETMVC的新手。你能解释一下ActionResult和ViewResult之间的区别吗?使用ActionResult作为我的操作的返回类型而不是视图有关系吗?渲染视图和返回视图是什么意思?
这是两个动作,如果我把Index()类型从ViewResult改为ActionResult会有关系吗?
public ViewResult Index()
{
var customers = GetCustomers();
return View(customers);
}
public ActionResult Details(int id)
{
var customer = GetCustomers().SingleOrDefault(c => c.Id == id);
if (customer == null)
return HttpNotFound();
return View(customer);
}
2条答案
按热度按时间des4xlb01#
return View()
中的视图帮助器方法实际上只是return ViewResult()
的简写。因此,您将返回一个 ViewResult,由于它是 ActionResult 的类型,因此您可以将方法的返回类型(例如 Details)设置为 ActionResult。以下是有关 ViewResult 类https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.viewresult?view=aspnetcore-7.0的详细信息
对于你问题的另一部分,渲染和返回视图,据我所知,视图是在动作响应方法中返回的(如您所示)。只有当您正在使用局部视图并希望在另一个视图中呈现该局部视图时,视图才会被 * render *。在这种情况下,局部视图是在视图文件中呈现的。2所以你最终仍然只需要在动作响应方法中返回视图,因为局部视图将在其中呈现。
有关渲染局部视图的详细信息,请查看此处:https://learn.microsoft.com/en-us/aspnet/core/mvc/views/partial?view=aspnetcore-7.0
jgwigjjp2#
以下是有关ActionResult和ViewResult Difference Between ViewResult() and ActionResult()的同一问题的链接
TLDR:ActionResult是一个抽象类,ViewResult派生自它。在大多数情况下,您应该使用ActionResult作为方法返回类型,因为它更方便和灵活(您可以返回任何派生自AcionResult的类)。但是如果您将ViewResult用作方法的返回类型,则必须返回ViewResult或派生自它的任何其他类