ASP.NET MVC C#如何使用此功能

Cam*_*ron 0 c# asp.net-mvc

我的HomeController类中有以下函数:

public class HomeController : Controller
    {

        public string Strip(string text)
        {
            return Regex.Replace(text,@"<(.|\n)*?>",string.Empty);
        }
Run Code Online (Sandbox Code Playgroud)

在我看来,我有以下内容来显示数据库中的文章:

<%= item.story %>
Run Code Online (Sandbox Code Playgroud)

典型文章如下所示:

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea <em>commodo consequat</em>.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
Run Code Online (Sandbox Code Playgroud)

如您所见,文本中包含HTML标记.我想要做的是使用带有item.story的Strip函数来删除那些HTML标记.之后,我想将剩余的文本截断为20个单词.

所以我最终会得到以下内容:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua dolore...没有HTML标签,只有大约20个字长.

如何使用我当前的代码执行此操作?HomeController是Strip功能的正确位置吗?谢谢

Rem*_*mus 5

控制器应该持有Actions.您正在寻找的可能是一种扩展方法,您可以在字符串上调用它.

您可能需要两个扩展名,一个用于删除HTML标记,另一个用于创建段落的20字短格式版本.

更新 回答你的问题......

您可以创建一个新类(比如ParagraphExtension.cs)并将您的字符串扩展名放在这个类中:

namespace myApp.Util.Extensions
{
      public static class ParagraphExtension
      {
           public static string RemoveHTMLTags(this string content)
           {
                   // insert code
           }

           public static string ShortFormParagraph(this string content)
           {
                   // insert code
           }
       }
}
Run Code Online (Sandbox Code Playgroud)

在您的视图中,您可以导入找到此类的命名空间:

<%@ Import Namespace="myApp.Util.Extensions" %>
Run Code Online (Sandbox Code Playgroud)

最后,您可以在视图中调用扩展程序:

<%= item.story.RemoveHTMLTags().ShortFormParagraph() %>
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

962 次

最近记录:

12 年,8 月 前