asp.net-mvc – MVC5 Html.RenderAction与不同的控制器

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – MVC5 Html.RenderAction与不同的控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我从MVC5开始,并从 MVC5 Getting Started创建了第一个项目。

现在尝试使用部分渲染,并在MoviesController中添加一个方法,如下所示

[ChildActionOnly]
public ActionResult PriceRange()
{
   var maxprice = db.Movies.Max(m => m.Price);
   var minprice = db.Movies.Min(m => m.Price);
   ViewBag.MaxPrice = maxprice;
   ViewBag.MinPrice = minprice;
   return PartialView();
}

它将“电影”集合中的“最小”和“最大”价格设置为后来在视图中显示的ViewBag。我试图用不同的观点来呈现。

首先,我试图在Views / Movies / Index.cshtml中呈现如下

@{Html.RenderAction("PriceRange");}

它工作得很好,结果显示正确,因为它使用MoviesController,方法PriceRange定义的相同的类。

然后我试图在Views / Hello / Index.cshtml(这个视图使用HelloWorldController)中使用以下代码(首先传递Action名称,然后是Controller name)

@{Html.RenderAction("PriceRange","MoviesController");}

这里是运行时错误

The controller for path ‘/HelloWorld/Index’ was not found or does not implement IController.

这是来自Views / Hello / Index.cshtml的完整代码

@{
    ViewBag.Title = "Movie List";
}
<h2>My Movie List</h2>
<p>Hello from our view template</p>
@{Html.RenderAction("PriceRange","MoviesController");}

我通过Google发现几个例子,他们以相同的方式调用RenderAction帮助器,首先传递Action名称,然后控制器名称

我不明白我在这里做错了什么
有人可以指出

解决方法

可能是将“Controller”后缀添加到不需要的控制器名称

尝试:

@{Html.RenderAction("PriceRange","Movies");}

猜你在找的asp.Net相关文章