Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取url?_C#_.net - Fatal编程技术网

C# 如何获取url?

C# 如何获取url?,c#,.net,C#,.net,我需要返回类似于/cat/prigotuvanya yizhi/dukhovi shafi/的Url,其中prigotuvanya yizhi是类别,而dukhovi shafi是子类别。但我不明白,怎么做 public class CmsCoreDbContext : CmsDbContextBase { public DbSet<CmsLiteralGroup> CmsLiteralGroups { get; set; } } public void Configure

我需要返回类似于
/cat/prigotuvanya yizhi/dukhovi shafi/
的Url,其中
prigotuvanya 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)
        };
    }
公共类CmsCoreDbContext:CmsDbContextBase
{
公共DbSet cmsliteralgroup{get;set;}
}
公共void配置(IApplicationBuilder应用程序,IHostingEnvironment环境)
{
应用
.UseMvc(routeBuilder=>
{
routeBuilder.LocalizeZeroutes(r=>
{
r、 MapRoute(“类别”、“cat/{category}/{subCategory}”、新的{Controller=“category”、Action=“Index”});
});
});
}
公共异步任务GetProductComparisonByList ID(int listId)
{
var comparisonList=_dbContext.productsComparison.Include(z=>z.ProductsToCompare).FirstOrDefault(z=>z.Id==listId);
var category=_dbContext.Categories.FirstOrDefault(z=>z.Id==comparisonList.CategoryId);
var literals=_dbContextCore.CmsLiteralGroups.AsNoTracking();
返回新的ProductComparationVM
{
//我需要在这里找到网址
ProductGroupUrl=“/cat/”+/“Prigotuvanya yizhi/”+“dukhovi shafi/”,
其中(z=>z.Code.ToLower()==id)
};
}
文字量

cmsliteralgroup
包含我在url中使用的所有代码。我需要设法得到它


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官方文档

如果我正确阅读了您的问题,您希望避免字符串操纵,并安全地使用url编码

<> > >强>如果您要< <强> >,请考虑使用<代码> URIHelp.Bu建dReals<代码> > <代码>微软.ASPNETCyr.http.Exp>/COD> 看

同样,假设我们需要构建一个相对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

类别控制器上定义ActionMethod

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

使用return
Url.Link(“GetProduct”,新的{yourCategoryString,yourSubcategoryString}
要返回新的url链接

嗨@Dima,你能帮我更好地理解这个问题吗?你在挣扎什么?你想避免字符串连接并使用对象模型来构建url,对吗?@ironstone13是的。我不需要字符串,我需要输入值:类别名称和子类别。它可以是不同的“我们不知道
文字
包含什么,我现在不确定这是不是应该回答的。”贾米克补充了关于literals@ironstone13几乎可以肯定,但我不是一个读心术的人,所以我不知道如何让这些属性来回答这个问题。