Sam*_*ech 25 asp.net-mvc renderaction
我从MVC5开始,并从MVC5入门创建了第一个项目.
现在尝试使用Partial Rendering并在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();
}
Run Code Online (Sandbox Code Playgroud)
它将电影集合中的最小和最大价格设置为稍后在视图中显示的ViewBag.我试图在不同的视图上呈现它.
首先,我尝试将其渲染Views/Movies/Index.cshtml如下
@{Html.RenderAction("PriceRange");}
Run Code Online (Sandbox Code Playgroud)
它在那里运行良好,结果显示正确,因为它正在使用MoviesController,方法PriceRange定义的同一个类.
然后我尝试Views/Hello/Index.cshtml使用HelloWorldController以下代码渲染它(此视图正在使用)(首先传递Action名称然后传递Controller名称)
@{Html.RenderAction("PriceRange", "MoviesController");}
Run Code Online (Sandbox Code Playgroud)
这里给出了运行时错误
未找到路径'/ HelloWorld/Index'的控制器或未实现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");}
Run Code Online (Sandbox Code Playgroud)
我通过Google找到了一些例子,他们以相同的方式调用RenderAction助手,首先传递Action名称然后传递Controller名称.
我无法理解我在这里做错了什么.有人可以指出吗?
Cha*_*ino 55
可能是您将"Controller"后缀添加到控制器名称中,这不是必需的.
尝试:
@{Html.RenderAction("PriceRange", "Movies");}
Run Code Online (Sandbox Code Playgroud)