Url.Action 如何工作 Asp.net MVC?
Posted
技术标签:
【中文标题】Url.Action 如何工作 Asp.net MVC?【英文标题】:How does Url.Action work Asp.net MVC? 【发布时间】:2010-12-18 01:37:52 【问题描述】:这与我问过的另一个问题有些相关,但我想为什么不单独问。
如果我要在视图中放置类似以下内容
<td><img src='<%= Url.Action( "DisplayImage" , "User" , new id = item.id ) %>' /></td>
它应该显示这个吗?
<td>
<img src='/User.mvc/DisplayImage?id=U00915441' />
</td>
或者 src-attribute 的值实际上会被 UserController GetImage Action 的结果替换吗?
【问题讨论】:
【参考方案1】:它将构造动作的路径,返回一个url,而不是执行动作的结果。
结果将是:
<td>
<img src='/User.mvc/DisplayImage?id=U00915441' />
</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 - 在从数据库中检索数据时,您将需要一些额外的处理和时间,但我认为构建文件结果与简单地从磁盘上提供文件相当。您还可以使用混合方法,将文件的路径存储在数据库中,然后从磁盘提供文件。从数据库中检索的数据会更少,因此可能会更快。以上是关于Url.Action 如何工作 Asp.net MVC?的主要内容,如果未能解决你的问题,请参考以下文章
无法显示带有 asp.net mvc url.action 链接的引导对话框
使用 Url.Action (ASP.NET MVC) 将分号附加到 href URL
asp.net Javascript window.location Url.Action 不起作用