【问题标题】:How does Url.Action work Asp.net MVC?Url.Action 如何工作 Asp.net MVC?
【发布时间】:2010-12-18 01:37:52
【问题描述】:

这与我问过的另一个问题有些相关,但我想为什么不单独问。

如果我要在视图中放置类似以下内容

<td><img src='<%= Url.Action( "DisplayImage" , "User" , new { id = item.id} ) %>' alt="" /></td>

它应该显示这个吗?

<td>
   <img src='/User.mvc/DisplayImage?id=U00915441' alt="" />
</td>

或者 src-attribute 的值实际上会被 UserController GetImage Action 的结果替换吗?

【问题讨论】:

    标签: asp.net asp.net-mvc helper url.action


    【解决方案1】:

    它将构造动作的路径,返回一个url,而不是执行动作的结果。

    结果将是:

    <td>
       <img src='/User.mvc/DisplayImage?id=U00915441' alt="" />
    </td>
    

    示例代码。假设您的用户模型将图像存储在字节数组中。如果您使用 LINQ 并且属性是 Binary,则使用 ToArray() 方法将其转换为字节数组。请注意需要用户登录并使用 GET 请求的属性。

    [Authorize]
    [AcceptVerbs( HttpVerbs.Get )]
    public ActionResult DisplayImage( string id )
    {
         var user = ...get user from database...
    
         return File( user.Image, "image/jpeg" );
    }
    

    }

    【讨论】:

    • 谢谢。您是否知道使用这种方法应该如何显示图像?我见过的每个显示图像的例子都使用这种方法,我不明白它是如何工作的(因为它不适合我)。我是 mvc 新手,所以这真的很有帮助。
    • 您需要一个名为 DisplayImage 的方法(或 GetImage,两种方法都有,但只有一种方法是正确的),它将用户的 id 作为参数。它需要返回一个 ContentResult,它具有适合图像格式的 mime 类型,例如 image/jpeg、image/gif 或 image/png。您的操作会将图像从数据库中检索到流中,并从该流中构造 ContentResult,设置 mime 类型。
    • 谢谢 tvan。有没有关于如何为存储在字节数组中的图像构造 ContentResult 的示例?
    • 现在我想你可能想要一个 FileContentResult。将更新一些代码。
    • @Steven - 在从数据库中检索数据时,您将需要一些额外的处理和时间,但我认为构建文件结果与简单地从磁盘上提供文件相当。您还可以使用混合方法,将文件的路径存储在数据库中,然后从磁盘提供文件。从数据库中检索的数据会更少,因此可能会更快。
    猜你喜欢
    • 2015-02-11
    • 2019-02-28
    • 2020-12-29
    • 2013-02-23
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多