Запаздывающая наклонная черта на маршруте MVC ASP.NET

Давайте попробуем это:

smax = lambda x: x[x.rank(ascending = False) == 2]
smax.__name__ = 'secondMax'

tmax = lambda x: x[x.rank(ascending = False) == 3]
tmax.__name__ = 'thirdMax'

df_out = df.groupby(['id1','id2']).agg(['max','min',smax, tmax])
df_out.columns = [f'{i}_{j}' for i,j in df_out.columns]
df_out = df.merge(df_out, on=['id1','id2'])
df_out = df_out.where(df_out.astype(bool))
df_out

Вывод:

   id1 id2   c1   c2  c1_max  c1_min c1_secondMax c1_thirdMax  c2_max  c2_min c2_secondMax c2_thirdMax
0    1  a1    5    3      34       5            9           6      32       2            4           3
1    1  a1    6    2      34       5            9           6      32       2            4           3
2    1  a1    9    4      34       5            9           6      32       2            4           3
3    1  a1   34   32      34       5            9           6      32       2            4           3
4    2  b1    5    2      23       5            5         NaN      43       2            2         NaN
5    2  b1   23   43      23       5            5         NaN      43       2            2         NaN
6    3  3a  234  435     234     234          NaN         NaN     435     435          NaN         NaN
16
задан Cœur 31 December 2016 в 08:13
поделиться

5 ответов

Когда Вы пишете свои ссылки, необходимо всегда включать заключительную наклонную черту. Я не знаю, относится ли это к mvc платформе (или URL, Направляющий в целом), но я знаю, что для статических ресурсов, если Вы не помещаете наклонную черту в Вас, добавляют небольшие издержки, поскольку запрос сделан дважды.

Наклонная черта сразу идентифицирует URL как указывающий на каталог. Никакая потребность проанализировать файлы.

Снова, я не полагаю, что это применяется, когда Вы используете маршрутизацию URL, но я не изучил ее.

Проверьте ЗДЕСЬ на статью о запаздывающей наклонной черте

править: После размышления об этом... Я думаю, что, вероятно, лучше бросить наклонную черту, вместо того, чтобы пытаться включать его. При использовании маршрутизации URL Вы используете URL для маршрутизации непосредственно к ресурсу. В противоположность тому, чтобы указывать на каталог с index.html или default.aspx, Вы указываете на определенный файл.

Я знаю, что различие является тонким, но может быть лучше придерживаться ненаклонной черты для Направленных URL, вместо того, чтобы бороться с платформой.

Используйте запаздывающую наклонную черту строго, когда Вы на самом деле укажете на каталог. Мысль я предполагаю Вас, могла просто добавить наклонную черту в конец каждый раз, если бы Вам действительно не нравилась она.

2
ответ дан 30 November 2019 в 23:09
поделиться

Если у вас есть оболочка над RouteLink, то есть простое решение проблемы. Например, у меня был метод-оболочка RouteLinkEx:

public static string RouteLinkEx(this HtmlHelper helper,string text,string routeName,RouteValueDictionary rvd,object htmlAttributes)
      {

      UrlHelper uh = new UrlHelper(helper.ViewContext.RequestContext,helper.RouteCollection);
      // Add trailing slash to the url of the link
      string url = uh.RouteUrl(routeName,rvd) + "/";
      TagBuilder builder = new TagBuilder("a")
      {
        InnerHtml = !string.IsNullOrEmpty(text) ? HttpUtility.HtmlEncode(text) : string.Empty
      };
      builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
      builder.MergeAttribute("href",url);
      return builder.ToString(TagRenderMode.Normal);
      //---  
      }

Как вы видите, я сначала использовал параметры для генерации URL. Затем я добавил "/" в конце URL-адреса. а затем я создал полную ссылку, используя этот URL.

3
ответ дан 30 November 2019 в 23:09
поделиться

Здесь перегрузка для RouteLinkEx(HtmlHelper, string,string, object)

        public static string RouteLinkEx(this HtmlHelper helper, string text, string routeName, object routeValues)
    {

        UrlHelper uh = new UrlHelper(helper.ViewContext.RequestContext);

        // Add trailing slash to the url of the link 
        string url = uh.RouteUrl(routeName, routeValues) + "/";
        TagBuilder builder = new TagBuilder("a")
        {
            InnerHtml = !string.IsNullOrEmpty(text) ? HttpUtility.HtmlEncode(text) : string.Empty
        };
        //builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
        builder.MergeAttribute("href", url);
        return builder.ToString(TagRenderMode.Normal);
        //---   
    }
1
ответ дан 30 November 2019 в 23:09
поделиться

Я случайно наткнулся на эту запись в блоге:

http://www.ytechie.com/2008/10/aspnet-mvc-what-about-seo.html

сегодня утром, прежде чем столкнулся с этим вопросом на StackOverflow. В этой записи (от автора вопроса) есть трекбек на эту запись в блоге Скотта Хансельмана с ответом на этот вопрос:

http://www.hanselman.com/blog/ASPNETMVCAndTheNewIIS7RewriteModule.aspx

Я был удивлен, что ссылки отсюда туда еще нет, поэтому просто добавил ее. :)

В ответе Скотта предлагается использовать URL Rewriting.

3
ответ дан 30 November 2019 в 23:09
поделиться

Вот моя версия для ASP.NET MVC 2

    public static MvcHtmlString RouteLinkEx(this HtmlHelper helper, string text, RouteValueDictionary routeValues)
    {
        return RouteLinkEx(helper, text, null, routeValues, null);
    }

    public static MvcHtmlString RouteLinkEx(this HtmlHelper htmlHelper, string text, string routeName, RouteValueDictionary routeValues, object htmlAttributes)
    {
        string url = UrlHelper.GenerateUrl(routeName, null, null, null, null, null, routeValues, htmlHelper.RouteCollection, htmlHelper.ViewContext.RequestContext, false);

        var builder = new TagBuilder("a")
        {
            InnerHtml = !string.IsNullOrEmpty(text) ? HttpUtility.HtmlEncode(text) : string.Empty
        };
        builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
        // Add trailing slash to the url of the link
        builder.MergeAttribute("href", url + "/");
        return MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal));
    }
1
ответ дан 30 November 2019 в 23:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: