Asp.net mvc 4 我';我在这个儿童行动或剃刀视图中丢失了

Asp.net mvc 4 我';我在这个儿童行动或剃刀视图中丢失了,asp.net-mvc-4,Asp.net Mvc 4,我的控制器中有一个子操作,它将图像返回到视图中的图像标记,该标记通过@Url.action调用该操作。我的问题是,当我从动作中删除ChildActionOnly属性时,图像会呈现,但当我将其添加回时,图像不会呈现。我需要这个动作来携带这个属性,这样它就不能被直接调用。下面是我的代码 [ChildActionOnly] public ActionResult GetImage(int id) { var photo = _Db.Photozs.Singl

我的控制器中有一个子操作,它将图像返回到视图中的图像标记,该标记通过@Url.action调用该操作。我的问题是,当我从动作中删除ChildActionOnly属性时,图像会呈现,但当我将其添加回时,图像不会呈现。我需要这个动作来携带这个属性,这样它就不能被直接调用。下面是我的代码

[ChildActionOnly]
 public ActionResult  GetImage(int id)
        {
            var photo = _Db.Photozs.Single(p => p.PhotozId == id);
            string path = Server.MapPath("~/Photo"+photo.Url);
            var fs = new FileStream(path, FileMode.Open);
            return new FileStreamResult(fs, photo.ContentType);
        }
这是我的看法

@model IEnumerable<okay.models.photoz>

@{
    ViewBag.Title = "Index";
}
<<div class="container-fluid">

    @foreach (var item in Model)
    {
        <div class="pull-left span3">
            <img class="img-polaroid" src="@Url.Action("GetImage",new{id=item.PhotozId})"/>
            <div class="text-center">@item.Caption</div>
        </div>
    }
</div>
@model IEnumerable
@{
ViewBag.Title=“Index”;
}

您的方法是正确的,但您在错误的位置使用了
[ChildAction]
,请将其删除

属性表示用于指示应仅作为子操作调用操作方法的属性

您并没有将方法作为子操作执行,所以在放置该属性后它不会执行。另外,子操作方法为部分视图呈现内联HTML标记,而不是呈现整个视图

  • 任何标记为
    ChildActionOnlyAttribute
    的方法只能通过
    Html.Action()
    Html.RenderAction()
    Html助手扩展方法调用
我的问题是,当我从中删除ChildActionOnly属性时 图像渲染的动作,但当我将其添加回时,它不会

仅对使用
Html.Action
Html.RenderAction
帮助程序呈现的操作使用
[ChildActionOnly]
属性。这些操作永远不会使用直接HTTP请求从客户端直接访问。当您将
标记的
src
属性指向服务器端端点时,浏览器正在向该端点发送HTTP请求。如果相应的端点用
[ChildActionOnly]
修饰,则无法将其呈现给客户端


因此,如果您希望使用HTTP请求从客户端直接访问此操作,则应该从控制器操作中删除此属性。

感谢您的响应。你建议我如何重新考虑我的代码?我想将图像发送到视图。你认为我还能怎样做到这一点?当然,如果用户不能直接调用和获取图像,你不明白我的答案吗?如果要将控制器操作中的
[ChildActionOnly]
属性用作
标记的目标,请将其删除。如果你不明白儿童行为是如何起作用的,我邀请你在下面的博文中发帖:我完全理解你的答案。我想知道的是,在不使用与渲染视图的操作不同的操作的情况下,还有哪些方法可以将图像添加到视图中。谢谢,againIt看起来像是来自数据库或其他东西的动态图像。您应该使用单独的控制器操作从基础数据存储中检索图像并将其提供给视图。没有其他方法。它是文件夹中的图像,但路径保存在我的数据库中。将其保存到视图右侧??好吧,我想我会试着放进我的取景袋。谢谢这是
视图
还是
局部视图
?我认为,
ChildActionOnly
应该只用于
部分视图
而不是
视图