2011-03-31 127 views
4

爲什麼將一個空參數傳遞給下面的控制器動作?傳遞給控制器​​動作的ASP.NET MVC空模型

<%@ 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> 

回答

6

無法發送複雜的對象是這樣的::

<%=Url.Action("GetImageForArticle", "Resources", new { article = item })%> 

只有簡單的標量的屬性:

<%=Url.Action("GetImageForArticle", "Resources", new { 
    Id = item.Id, 
    Foo = item.StringFoo, 
    Bar = item.IntegerBar 
})%> 

所以一個好的

public FileContentResult GetImageForArticle(ArticleSummary article) 
     {    
      if (article == null || !article.ContainsValidThumbNail()) return null;    
      return File(article.ThumbNail, article.ThumbNaiType); 
     } 
從下面的局部視圖

在這個練習c ASE是隻發送ID:

<%=Url.Action("GetImageForArticle", "Resources", new { id = item.Id }) %> 

,然後讓你的控制器動作獲取從任何位置存儲給這個ID對應型號:

public ActionResult GetImageForArticle(int id) 
{    
    ArticleSummary article = _someRepository.GetArticle(id); 
    if (article == null || !article.ContainsValidThumbNail()) 
    { 
     return null;    
    } 
    return File(article.ThumbNail, article.ThumbNaiType); 
} 
+0

謝謝你,謝謝你。 – 2011-03-31 18:12:40

相關問題