MVC将函数移动到类

时间:2014-05-29 08:44:45

标签: c# asp.net asp.net-mvc-5

目前我在View中使用了一个名为ToFriendlyUrl的函数,但希望通过将其移动到一个类来集中该代码,以便可以从其他视图中引用该函数。

@functions {
    private object ToFriendlyUrl(string urlToEncode)
    {
        var url = new StringBuilder();

        foreach (char ch in urlToEncode)
        {
            switch (ch)
            {
                case ' ':
                    url.Append('-');
                    break;
                case '&':
                    url.Append("and");
                    break;
                case '\'':
                    break;
                default:
                    if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))
                    {
                        url.Append(ch);
                    }
                    else
                    {
                        url.Append('-');
                    }
                    break;
            }
        }

        return url.ToString();
    }
}

该函数的调用方式与ToFriendlyUrl(content.Title)类似。

请问一些正文如何构建新类,然后我将如何从View中引用该功能?

非常感谢任何帮助: - )

3 个答案:

答案 0 :(得分:2)

您还可以创建HtmlHelper扩展名:

public static class HtmlHelperExtensions
{
    public static IHtmlString ToFriendlyUrl(this HtmlHelper helper, string urlToEncode)
    {
        var url = new StringBuilder();

        foreach (char ch in urlToEncode)
        {
            switch (ch)
            {
                case ' ':
                    url.Append('-');
                    break;
                case '&':
                    url.Append("and");
                    break;
                case '\'':
                    break;
                default:
                    if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))
                    {
                        url.Append(ch);
                    }
                    else
                    {
                        url.Append('-');
                    }
                    break;
            }
        }

        return new MvcHtmlString(url.ToString());
    }
}

并在您的观看中使用它:

@Html.ToFriendlyUrl(url)

答案 1 :(得分:0)

您不需要课程,您可以将该功能移至_Layout,将其添加到脚本块,所有视图都可以调用它。

您还可以将其移动到js文件并将其包含在需要功能的视图中,或者_Layout可以包含脚本。

答案 2 :(得分:0)

您可以将该功能添加到“部分”视图中。然后,您可以在任何地方渲染局部视图。

祝你好运