Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 直接访问时能够查看PartialView,但不能使用HTML.Partiaul_Asp.net Mvc_Entity Framework - Fatal编程技术网

Asp.net mvc 直接访问时能够查看PartialView,但不能使用HTML.Partiaul

Asp.net mvc 直接访问时能够查看PartialView,但不能使用HTML.Partiaul,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我有这样一个局部视图,它应该为我提供请求的所有相关记录: public ActionResult DetailsList(short? id) { var requestDetails = db.RequestDetails.Where(i => i.RequestID == id); return View(requestDetails.ToList()); } 当访问时,它将加载特定ID的所有记录(在本

我有这样一个局部视图,它应该为我提供请求的所有相关记录:

public ActionResult DetailsList(short? id)
        {
            var requestDetails = db.RequestDetails.Where(i => i.RequestID == id);
            return View(requestDetails.ToList());

        }
当访问时,它将加载特定ID的所有记录(在本例中,请求号为24)

我正试图将其作为部分视图嵌入到我的主请求页面中,如下所示:

@model CollectionMGR.Models.Request

@{
    ViewBag.Title = "Collection Creation Request Details";
}

<h2>Details</h2>

<div>
    <h4>Request Overview</h4>
    <hr /><p>You can view detailed info about your request here</p>
    <dl class="dl-horizontal">
        <dt>
            @Html.DisplayNameFor(model => model.User)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.User)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.AppName)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.AppName)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.PackageName)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.PackageName)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.Action)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.Action)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.CollectionID)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.CollectionID)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.Computers)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.Computers)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.Disposed)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.Disposed)
        </dd>

    </dl>
</div>
<p>
    @Html.ActionLink("Edit", "Edit", new { id = Model.RequestID }) |
    @Html.ActionLink("Back to List", "Index")

    <h3>@ViewBag.DetailStatus</h3>

    @if (ViewBag.DetailStatus == "No detailed records found")
    {
    <p>no stuff to show</p>
}
else
{
    <p>would be displaying stuff here</p>


    <div>
        <p><i>Start of Partial View</i></p>
        @Html.Partial("../RequestDetails/DetailsList", Model.RequestID)
        <p><i>End of Partial View</i></p>

        @Html.ActionLink("Edit", "Edit", new { id = Model.RequestID }) |
        @Html.ActionLink("Back to List", "MemberList")
    </div>
}
我太困惑了!我可以整天访问DetailsList端点,但当我尝试将其部分渲染为局部视图时,它会崩溃吗?哇

以下是
RequestDetails/DetailsList
端点的代码:

@model IEnumerable<CollectionMGR.Models.RequestDetail>

@{
    ViewBag.Title = "_RequestDetails";
}

<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.RequestID)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.HostName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.ResourceID)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Request.User)
        </th>
        <th></th>
    </tr>

    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.RequestID)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.HostName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.ResourceID)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Request.User)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id = item.RequestDetailsID }) |
                @Html.ActionLink("Details", "Details", new { id = item.RequestDetailsID }) |
                @Html.ActionLink("Delete", "Delete", new { id = item.RequestDetailsID }) |
                @Html.ActionLink("View Request", "../Request/Details/", new { id = item.RequestID })
            </td>
        </tr>
    }

</table>
@model IEnumerable
@{
ViewBag.Title=“\u请求详细信息”;
}
@DisplayNameFor(model=>model.RequestID)
@Html.DisplayNameFor(model=>model.HostName)
@DisplayNameFor(model=>model.ResourceID)
@DisplayNameFor(model=>model.Request.User)
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.RequestID)
@DisplayFor(modelItem=>item.HostName)
@DisplayFor(modelItem=>item.ResourceID)
@DisplayFor(modelItem=>item.Request.User)
@ActionLink(“编辑”,“编辑”,新的{id=item.RequestDetailsID})|
@ActionLink(“详细信息”,“详细信息”,新的{id=item.RequestDetailsID})|
@ActionLink(“删除”,“删除”,新的{id=item.RequestDetailsID})|
@ActionLink(“查看请求“,”./Request/Details/”,新的{id=item.RequestID})
}
我确信堆栈跟踪是有帮助的,但我不知道在谈论类型转换时它意味着什么。我试图部分渲染的视图在我手动导航到它时工作得很好,所以我不确定为什么它会失败


谢谢你的指点,我已经看过了其他类似主题的例子,只是不明白而已

错误是不言自明的。您的
DetailsList
视图被强类型化为
IEnumerable
。因此,它期望将
RequestDetail
对象的集合传递给它。但是在代码中,您使用
Html.Partial
方法调用此视图,并将
RequestID
属性传递给它,该属性是
int
值。您得到错误是因为您传递的内容与预期的不同

查看您的代码,我发现您有一个操作方法
DetailsList
,它获取
DetailsList
视图所需的数据并传递到该视图。因此,在主视图中,不应该调用
Html.Partial
方法,而应该调用
Html.Action
helper方法

<p><i>Start of Partial View(Actually the Action method) </i></p>

@Html.Action("DetailsList",Model.RequestID)

<p><i>End of Partial View</i></p>
局部视图的开始(实际上是动作方法)

@Action(“DetailsList”,Model.RequestID) 局部视图结束


当razor执行主视图的代码时,它将执行此子操作
DetailsList
,并将其结果添加到主视图输出中。

错误是不言自明的。您的部分视图强类型为
IEnumerable
,但在主视图中,您只传递
RequestID
。确保传递了正确的值。好的,我将代码换掉了,但是现在得到了这个错误在控制器“CollectionMGR.Controllers.RequestsController”上找不到公共操作方法“DetailsList”。'该操作来自我的项目中的其他控制器。有没有一种方法可以直接从这个控制器和视图调用另一个动作?事实上,我刚刚把所有的东西都放到了一个控制器中,它工作得非常好,非常感谢!哪个控制器定义了
DetailsList
?如果是不同的操作,可以使用where指定操作方法名称和控制器名称
@Html.Action(“DetailsList”、“YourOtherControllerName”、Model.RequestID)
<p><i>Start of Partial View(Actually the Action method) </i></p>

@Html.Action("DetailsList",Model.RequestID)

<p><i>End of Partial View</i></p>