MVC渲染部分视图与控制器

时间:2017-08-23 08:53:11

标签: c# asp.net-mvc partial-views

我有我的主索引页面,我尝试使用以下代码渲染部分视图:

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;

显然,我做错了,有人可以告诉我使用相关控制器渲染局部视图的标准方法吗?

3 个答案:

答案 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);
}