有条件地生成 Asp-route 属性

Generate Asp-route attributes conditionally

提问人:albert 提问时间:3/19/2023 更新时间:3/19/2023 访问量:79

问:

我正在使用 razor 标记帮助程序从视图中的模型生成锚链接。asp-route-xxx

     <a asp-page="/Products"
      asp-route-currentpage="@i"
      asp-route-minprice="@Model.MinPrice"
      asp-route-maxprice="@Model.MaxPrice">Products</a>

生成的 url 是 。 是否可以为默认值 (0) 创建查询部分?/products?currentpage=3&minprice=10&maxprice=100

例如,如果 min-price 为 0,则无需在查询字符串中生成部分。&minprice=0

我尝试过这样的事情,但剃须刀不满意,你不能在html属性中编写c#。

 @if(FilterModel.MinPrice > 0 )
 {
    asp-route-minprice="@Model.MinPrice"
 }
 @if(FilterModel.MaxPrice > 0 )
 {
    asp-route-maxprice="@Model.MaxPrice"
 }
asp.net-core-tag-helpers

评论


答:

1赞 Dimitris Maragkos 3/19/2023 #1

你可以这样做:

<a asp-page="/Products"
   asp-route-currentpage="@i"
   asp-route-minprice="@(Model.MinPrice != default ? Model.MinPrice : null)"
   asp-route-maxprice="@(Model.MaxPrice != default ? Model.MaxPrice : null)">Products</a>

艺术

@{
    int? minPrice = Model.MinPrice != default ? Model.MinPrice : null;
    int? maxPrice = Model.MaxPrice != default ? Model.MaxPrice : null;
}
<a asp-page="/Privacy"
   asp-route-currentpage="@i"
   asp-route-minprice="@minPrice"
   asp-route-maxprice="@maxPrice">Products</a>