2011-09-27 67 views
0

我正在开发基于插件的体系结构。它是一种社交网站。 对于一个用户,我可以有图片,博客,视频。但它们全都来自模块。 因此,当您访问用户个人资料时,您会看到标签,说出图片,视频和其他内容。 我有一个接口asp.net mvc action result and count question

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" }; 

} 
} 

该网址与图片控制器的操作方法。

在我的个人资料页,我得到IUserContent

的所有实现
var list = GetAllOf(IUserContent); 

,并使用foreach循环为用户个人资料页上的标签使它们。

现在,我的问题是,有没有更好的方法来做到这一点。我不想使用URL作为字符串。 或任何更好的做法来实现它。

问候

成员Parminder

回答

1

是。

替换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

请参阅: -

如需进一步信息:)