Как получить URL? - PullRequest
       1

Как получить URL?

0 голосов
/ 03 апреля 2020

Мне нужно вернуть URL, например /cat/prigotuvannya-yizhi/dukhovi-shafi/, где prigotuvannya-yizhi - категория, а dukhovi-shafi - подкатегория. Но не могу понять, как это сделать

public class CmsCoreDbContext : CmsDbContextBase
{
    public DbSet<CmsLiteralGroup> CmsLiteralGroups { get; set; }
}

public void Configure(IApplicationBuilder application, IHostingEnvironment env)
{
    application            
        .UseMvc(routeBuilder =>
        {
            routeBuilder.LocalizeRoutes(r =>
            {
                r.MapRoute("category", "cat/{category}/{subCategory}", new { Controller = "Category", Action = "Index"});
            });
        });
}

    public async Task<ProductComparsionVM> GetProductComparisonByListId(int listId)
    {
        var comparsionList = _dbContext.ProductsComparsion.Include(z => z.ProductsToCompare).FirstOrDefault(z => z.Id == listId);
        var category = _dbContext.Categories.FirstOrDefault(z => z.Id == comparsionList.CategoryId);
        var literals = _dbContextCore.CmsLiteralGroups.AsNoTracking();

        return new ProductComparsionVM
        {
            // I need to get url here somehow
            ProductGroupUrl = "/cat/" + //"prigotuvannya-yizhi/" + "dukhovi-shafi/",
                                literals.Where(z => z.Code.ToLower() == id)
        };
    }

Литералы

CmsLiteralGroups содержат все коды, которые я использую в URL. И мне нужно как-то его получить

enter image description here

Ответы [ 3 ]

0 голосов
/ 03 апреля 2020

Если Я правильно прочитал ваш вопрос, вы хотели бы избежать манипуляции со строками и безопасно использовать URL-кодировку.

Если это то, что вы хотите , пожалуйста, рассмотрите возможность использования UriHelper.BuildRelative из Microsoft.AspNetCore.Http.Extensions См. UriHelper

Опять при условии, что нам нужно построить относительный URL , вы могли бы сделать что-то вроде

        var category = "prigotuvannya-yizhi";
        var subCategory = "dukhovi-shafi";
        var id = 42;
        var result =
            new[] { category, subCategory, id.ToString() }
            .Aggregate("/", (acc, x) => UriHelper.BuildRelative(acc, "/" + x));

Открытые вопросы:

  • Что держит literals? Похоже, это объект, поэтому вам нужно будет проецировать его на скаляр, чтобы поместить в URL
0 голосов
/ 03 апреля 2020

Определите на вашем CategoryController ActionMethod

[HttpGet("cat/{category}/{subCategory}", Name="GetProduct")]
public string[] SearchByProducts(string category,string subcategory)
{
    return new[]
    {
        $"Category: {category}, Subcategory: {subcategory}"
    };
}

используйте return Url.Link("GetProduct", new {yourCategoryString, yourSubcategoryString}, чтобы вернуть новый UrlLink

0 голосов
/ 03 апреля 2020

String.Format - ваш друг, так как он позволяет вам полностью записать ваш URL с заполнителями и передать эти значения через массив.

Например,

string result2 = String.Format("Temperature on {0:d}:\n{1,11}: {2} degrees (hi)\n{3,11}: {4} degrees (lo)", object[] { date1, hiTime, hiTemp, loTime, loTemp });

Для подробнее см. официальную документацию Microsoft здесь https://docs.microsoft.com/en-us/dotnet/api/system.string.format?view=netframework-4.8#System_String_Format_System_String_System_Object___

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