Asp.net MVC操作结果和计数问题



我正在做一个基于插件的架构。这是一种社交网站。对于用户,我可以有图片,博客,视频。但它们都来自模块。所以,当你访问用户档案时,你会看到标签,上面写着图片、视频和其他东西。我有一个接口

public interface IUserContent
{
    UserContent GetContent(long id);

}
public class UserContent
{
   public int Count {get;set;}
   public string URL {get;set;
   public string Text {get;set;
}

如果一个照片模块实现了IUserContent它看起来像这样

public class UserPhotos : IUserContent
{
  public UserContent GetContent(long id)
  {
     return new UserContent { 
               Count = SomeRepository.GetPhotosCountByUser(id), 
               URL =  string.format("/photos/byuser/{0}",id) ,
               Text ="Photos"  };
 }
}

这个URL是Photos Controller中的一个动作方法。

在我的个人资料页我得到IUserContent的所有实现

var list =  GetAllOf(IUserContent);

,并使用foreach循环将它们呈现为用户配置文件页面上的选项卡。

现在,我的问题是,有没有更好的方法来做这件事。我不想使用URL作为字符串。或者有更好的方法来实现它。

Parminder

可以。

URL = string.format("/photos/byuser/{0}",id)替换为:

URL = Url.Action("ByUser", "Photo", new { id })

如果您希望生成一个url,其中您的操作称为ByUser并接受id作为参数,您的控制器称为PhotoController;或者使用:

URL = Url.RouteUrl("PhotosByUser", new { id })

如果你想从一个叫做PhotosByUser的路由生成你的url。

: -

  • http://msdn.microsoft.com/en-us/library/dd460348.aspx;
  • http://msdn.microsoft.com/en-us/library/dd505215.aspx

更多信息:)

相关内容

  • 没有找到相关文章