加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC null模型传递给控制器??动作

发布时间:2020-12-16 06:45:16 所属栏目:asp.Net 来源:网络整理
导读:为什么将null参数传递给以下控制器操作? public FileContentResult GetImageForArticle(ArticleSummary article) { if (article == null || !article.ContainsValidThumbNail()) return null; return File(article.ThumbNail,article.ThumbNaiType); } 从以
为什么将null参数传递给以下控制器操作?

public FileContentResult GetImageForArticle(ArticleSummary article) 
        {             
            if (article == null || !article.ContainsValidThumbNail()) return null;            
            return File(article.ThumbNail,article.ThumbNaiType);
        }

从以下局部视图:

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

解决方法

你不能像这样发送复杂的对象:

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

只有简单的标量属性:

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

所以在这种情况下的一个好习惯是只发送一个id:

<%=Url.Action("GetImageForArticle",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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读