我的测试设置包含一个带有foreach的视图,该视图遍历一个简单的模型,目的是为模型集合中的每个项目渲染一个图像。在循环内部是两个@ Url.Action助手,它们在控制器中调用FileContentResult方法,除了从视图中获取参数而另一个参数变量是硬编码的。
@foreach (var i in Model.FeaturedItems)
{
<img src="@Url.Action("GetFooImage", "Home", new {})" alt="@i.Name" />
<img src="@Url.Action("GetFoobarImage", "Home", new {i.ItemID, Entity="item", Size="m"})" alt="@i.Name" />
}
在我的控制器中,两种方法是:
public FileContentResult GetFooImage() // variables hard coded in body
public FileContentResult GetFoobarImage(int id, string entity, string size)
GetFooImage()返回一个图像。 FileContentResult GetFoobarImage()没有。
这是一个谜: 如果我在GetFoobarImage上放置一个断点,它甚至都不会被击中。 我无法弄清楚为什么GetFooImage被调用但是GetFoobarImage没有
答案 0 :(得分:4)
仔细检查Url.Action
@ Url.Action(“GetFoobarImage”,“Home”,new {i.ItemID,Entity =“item”,Size =“m”})“
您的通话中缺少“id =”。它应该是
@Url.Action("GetFoobarImage", "Home", new {id = i.ItemID, Entity="item", Size="m"})
同时仔细检查您的签名。 Url.Action中的实体与方法声明中的Entiry匹配存在问题。不确定这是否是您示例中的拼写错误。