Kla*_*Nji 4 asp.net asp.net-mvc
为什么将null参数传递给以下控制器操作?
public FileContentResult GetImageForArticle(ArticleSummary article)
{
if (article == null || !article.ContainsValidThumbNail()) return null;
return File(article.ThumbNail, article.ThumbNaiType);
}
Run Code Online (Sandbox Code Playgroud)
从以下局部视图:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<AkwiMemorial.Models.ArticleSummary>>" %>
<%if (Model.Count() > 0)
{ %>
<table>
<% foreach (var item in Model)
{ %>
<tr>
<td>
<img src='<%=Url.Action("GetImageForArticle", "Resources", new { article = item })%>' alt=""/>
</td>
</tr>
<% } %>
</table>
Run Code Online (Sandbox Code Playgroud)
你不能像这样发送复杂的对象:
<%=Url.Action("GetImageForArticle", "Resources", new { article = item })%>
Run Code Online (Sandbox Code Playgroud)
只有简单的标量属性:
<%=Url.Action("GetImageForArticle", "Resources", new {
Id = item.Id,
Foo = item.StringFoo,
Bar = item.IntegerBar
})%>
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下的一个好习惯是只发送一个id:
<%=Url.Action("GetImageForArticle", "Resources", new { id = item.Id }) %>
Run Code Online (Sandbox Code Playgroud)
然后让你的控制器操作从存储的任何地方获取相应的模型给出这个id:
public ActionResult GetImageForArticle(int id)
{
ArticleSummary article = _someRepository.GetArticle(id);
if (article == null || !article.ContainsValidThumbNail())
{
return null;
}
return File(article.ThumbNail, article.ThumbNaiType);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2949 次 |
| 最近记录: |