使用MVC3在.NET中实现“Read More”

时间:2012-06-08 13:21:49

标签: asp.net-mvc asp.net-mvc-3 razor

我正在用MVC3在.NET中编写一个简单的“博客”应用程序,作为一种学习练习。

要实现 - 基本 - “阅读更多”功能,我已经为tiny_mce添加了一个自定义按钮,当按下时,插入

<!--#readmore#-->

进入帖子内容。

我们的想法是获取要在主页上显示的内容,然后添加链接,如果有更多要阅读的内容,就像每个博客引擎所做的那样。

这样做非常简单,我的问题是我应该在哪里?现在,我有Post模型中的功能:

public String content_read_more()
    {
        if (this.content.Contains("<!--#readmore#-->"))
        {
            int position = this.content.IndexOf("<!--#readmore#-->");
             this.has_read_more = true; 
            return this.content.Substring(0, position);
        }
        else
        {
            this.has_read_more = false;
            return this.content;                 
        }
    }

我避免在模型中创建指向完整帖子的链接,因为它似乎不是模型应该做的事情。

但是,这样做,我必须检查帖子在视图中是否有更多内容:

<div class="content">
    @Html.Raw(item.content_read_more())
    @if (item.hasReadMoreLink())
    {
        @Html.ActionLink("Leer más", "Details", new { id = item.id })
    }
</div>

将逻辑引入视图。

我应该在控制器中进行吗?有一个更好的方法吗?我这么想太难了吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

这是完全正常的 在视图中添加简单if没有任何问题。

您应避免在视图中添加业务逻辑;相反,你应该将它放在控件中并将结果发送到视图(就像你现在正在做的那样)。