Как переопределить @ url.content в MVC? - PullRequest
3 голосов
/ 07 февраля 2012

У меня есть приложение MVC.После того, как я закончил работу с веб-сайтом, мне нужно изменить поведение @url.content.

Поэтому мне нужно переопределить @url.content во всех приложениях моего веб-сайта.Как мне это сделать?

<script src="@Url.Content("~/Scripts/jquery-1.7.1.js")"></script>
<script src="@Url.Content("~/Scripts/ui/jquery.ui.core.js")"></script>
<script src="@Url.Content("~/Scripts/ui/jquery.ui.widget.js")"></script>
<script src="@Url.Content("~/Scripts/ui/jquery.ui.tabs.js")"></script>
<script src="@Url.Content("~/Scripts/ui/jquery.ui.accordion.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.nivo.slider.js")"></script>
<script src="@Url.Content("~/Scripts/jwplayer.js")"></script>

Ответы [ 2 ]

4 голосов
/ 07 февраля 2012

Я думаю, что ваша лучшая ставка здесь будет просто создать еще один UrlHelper метод расширения.

public static class MyExtensions
{
    public static string ContentExt(this UrlHelper urlHelper, string Content)
    {
        // your logic
    }
}
3 голосов
/ 07 февраля 2012

MHF

Как упомянуто в моих комментариях выше, я «чувствую», что вам следует создать специальный помощник html.image (), а не пытаться переопределить помощник url.content (), учитывая, что ваша проблема связана с изображениями, а не url.content () per se. вот как я подхожу к этому:

public static partial class HtmlHelperExtensions
{
    public static MvcHtmlString Image(this HtmlHelper helper,
                                string url,
                                object htmlAttributes)
    {
        return Image(helper, url, null, htmlAttributes);
    }
    public static MvcHtmlString Image(this HtmlHelper helper,
                                    string url,
                                    string altText,
                                    object htmlAttributes)
    {
        TagBuilder builder = new TagBuilder("image");

        var path = url.Split('?');
        string pathExtra = "";

        // NB - you'd make your test for the existence of the image here
        // and create it if it didn't exist, then return the path to 
        // the newly created image - for better or for worse!! :)

        if (path.Length > 1)
        {
            pathExtra = "?" + path[1];
        }
        builder.Attributes.Add("src", VirtualPathUtility.ToAbsolute(path[0]) + pathExtra);
        builder.Attributes.Add("alt", altText);
        builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
        return MvcHtmlString.Create(builder.ToString(TagRenderMode.SelfClosing));
    }
}   

Useage:

@Html.Image("~/content/images/ajax-error.gif", new{@class="error_new"})

Теперь вышесказанное является просто «лифтом» из старого проекта MVC, с добавлением комментария, чтобы дать подсказку о том, что вы могли бы сделать. Я не проверял это никоим образом, так что будьте внимательны:)

удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...