[英]MVC Rendering Partial View with controller
我有主索引页面,并且尝试使用以下代码呈现部分视图:
@{Html.RenderAction("PartialView", "PartialViewController");}
我的控制器看起来像这样:
public ActionResult Index()
{
GetDataFromProc proc = new GetDataFromProc();
DataSet ds = proc.CallProcToDataSet("mySproc");
return PartialView(ds);
}
我的部分看法如下:
@using System.Data
@model DataSet
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th>Year</th>
<th>Month</th>
<th>Hits</th>
</tr>
</thead>
<tbody>
@foreach (DataRow row in Model.Tables[0].Rows)
{
<tr>
<td>@row["_year"]</td>
<td>@row["_monthName"]</td>
<td>@row["_monthCount"]</td>
</tr>
}
</tbody>
</table>
</div>
没什么大胆的突破,但是每次我运行我的项目时,都会收到以下错误消息: The controller for path '/' was not found or does not implement IController
显然我做错了什么,有人可以告诉我使用关联控制器渲染部分视图的标准方法吗?
您的PartialViewController
定义可能会导致这种情况。 并且您的操作名称是“ Index”,但是您试图显示“ PartialView”功能。 您可以尝试将其与命名为“ Index”的函数一起使用,而无需添加“ Controller”:
//Usage Style: @{Html.RenderAction("ActionName", "ControllerName");}
@{Html.RenderAction("Index", "PartialView");}
您的代码中有多个问题。
@{Html.RenderAction("PartialView", "PartialViewController");}
您必须在RenderAction方法中定义操作方法和控制器方法。 因此,您的PartialView
是您的方法, PartialViewController
是您的控制器。
但是在服务器端,您没有实现,也没有名为partialView
任何方法。 相反,您具有Index
方法。 请将其更改为PartialView
如下所示。
public ActionResult PartialView()
{
GetDataFromProc proc = new GetDataFromProc();
DataSet ds = proc.CallProcToDataSet("mySproc");
return PartialView(ds);
}
必须将视图命名为PartialView才能匹配方法名称和视图名称。否则,应添加名称以return PartialView("PartialView", ds)
而且您不必指定控制器名称为“ PartialViewController”。 省略Controller部分,仅将其称为PartialView
。
@{Html.RenderAction("PartialView", "PartialView");}
我认为您只是缺少正确的语法。
您拥有部分视图: _MyPartialView.cshtml
在您的父html视图中(可以是另一个视图或layout.cshtml):
@Html.Action("MyPartialView", "MyPartialController")
创建一个新的控制器或使用一个现有的控制器:
//
[HttpGet]
public PartialViewResult MyPartialView()
{
MyPartialViewModel model = new MyPartialViewModel();
return PartialView("~/Path/To/_myPartialView.cshtml", model);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.