我有我的主索引页面,我尝试使用以下代码渲染部分视图:
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
没有任何明显的开创性,但每次我运行我的项目时都会收到以下错误消息:rewrite ^/redirected$ /index.html;
显然,我做错了,有人可以告诉我使用相关控制器渲染局部视图的标准方法吗?
答案 0 :(得分:2)
您的PartialViewController
定义可能会导致这种情况。你的行动名称是&#34;索引&#34;但是你试图展示&#34; PartialView&#34;功能。您可以尝试使用&#34;索引&#34;命名功能,没有&#34;控制器&#34;此外:
//Usage Style: @{Html.RenderAction("ActionName", "ControllerName");}
@{Html.RenderAction("Index", "PartialView");}
答案 1 :(得分:0)
您的代码中存在多个问题。
@{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”。省略控制器部分,仅将其称为PartialView
。
@{Html.RenderAction("PartialView", "PartialView");}
答案 2 :(得分:0)
我认为您只是缺少正确的语法。
您拥有部分视图:_MyPartialView.cshtml
在您的父html视图中(可以是另一个视图或layout.cshtml):
@Html.Action("MyPartialView", "MyPartialController")
创建新控制器或使用现有控制器:
//
[HttpGet]
public PartialViewResult MyPartialView()
{
MyPartialViewModel model = new MyPartialViewModel();
return PartialView("~/Path/To/_myPartialView.cshtml", model);
}