ASP.NET 中关于MVC的一个很简单的问题(页面跳转时,图片显示不成功)

是这样子的:主页显示所有产品目录(代码如下:)<%foreach(Productpin(IEnumerable)Model){%><ulstyle="float:left... 是这样子的:主页显示所有产品目录(代码如下:)

<%foreach (Product p in (IEnumerable)Model)
{ %>
<ul style=" float:left;list-style:none; text-align:center; color:Yellow;" >
<li>
<a href='<%=Url.Action("detials", "home", new {id=p.ProductID })%>'> <img src='<%=string.Format("Home/GetImage/{0}",p.ProductID)%>' alt="<%=Html.Encode(p.ProductName)%>) "
height="100px" width="100px" style=" border:0px" /></a> </li>
<li>名称:
<%=Html.Encode(p.ProductName) %></li>
<li>价格:
<%=Html.Encode(p.UnitsOnOrder) %></li>
<li>是否存货:
<%=Html.Encode(p.UnitsInStock) %></li>
</ul>

<%} %>

当点击图片 察看详细情况时,跳转到detials页面(代码如下:)

<h2>产品详细</h2>
<ul style=" list-style:none; text-align:left; color:Blue">
<li><img src='<%=string.Format("home/GetImage/{0}",Model.ProductID)%>' alt="" height="300" width="300"/></li>
<li>产品名称:<%=Html.Encode(Model.ProductName)%></li>
<li>提供地:<%=Html.Encode(Model.images11) %></li>
<li>价格:<%=Html.Encode(Model.UnitsOnOrder) %></li>
<li>是否存货:<%=Html.Encode(Model.UnitsInStock) %></li>
<li>质量级数:<%=Html.Encode(Model.ReorderLevel) %></li>
</ul>

当跳到这个详细页面时,图片就不能显示出来。但是:当在:Global.asax页更改运行首页时,就可以正常显示:这个原因 是为什么呢?

GetImage 方法代码如下:
public ActionResult GetImage(int? id)
{
Product p = database.Product.Single(pr => pr.ProductID == id);
MemoryStream imageStrem = new MemoryStream(p.images.ToArray());
return new MyCompletion_MVC.Code.Helper(imageStrem, "image/jpeg");
}

helper类代码:
namespace MyCompletion_MVC.Code
{
public class Helper : ActionResult
{
private MemoryStream _imageStream;
private string FileStyle;
public Helper(MemoryStream imageStream, string fileStyle)
{
_imageStream = imageStream;
FileStyle = fileStyle;
}

public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
new ArgumentException("context is null");
}
if (_imageStream == null)
{
new ArgumentException(" imageStream is null");
}
if (string.IsNullOrEmpty(FileStyle))
{
new ArgumentException("FileStyle is null");
}

HttpResponseBase response = context.HttpContext.Response;
response.Clear();
response.Cache.SetCacheability(HttpCacheability.NoCache);
response.ContentType = FileStyle;
_imageStream.WriteTo(response.OutputStream);
}
}
}

恳请高手帮帮小弟。。小弟无尽感激。。。
Url.Action 跟 Url.Content 这两个方法有什么差别呢?
展开
 我来答
重典技术闲话
2010-07-05 · TA获得超过2173个赞
知道大有可为答主
回答量:2593
采纳率:0%
帮助的人:1135万
展开全部
可能是路径不同,你的Details和List页面不是在同一级下的,home/getimage可能在Details下面是访问不了的,可以"/home/getimage"

Url.Action是通过Action/Controller/ RouteData之类的数据生成一个Action的Url

Url.Content只有一种用法,指向一个静态文件的路径
Url.Content("~/Script/jquery.validate.js");
Url.Content("~/Content/Site.css");

类似这样

你的<%=string.Format("home/GetImage/{0}",Model.ProductID)%>
也可以通过
<%=Url.Action("GetImage","Home",new{id=Modek,ProductId})%>来获得Url
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式