У меня есть жестко закодированные параметры выбора на моей странице Razor.
Вот выбранная часть:
<div class = "form-group col-md-5 input-group">
<select class = "custom-select" id = "validationCustom04" required>
<option selected disabled value = "">Choose...</option>
<option value = "000000001585">2100 ZA</option>
<option value = "000000001570">10 TL'lik Steam Bakiyesi</option>
<option value = "000000001696">4300 ZA</option>
<option value = "000000001572">400 Riot Points</option>
<option value = "000000001573">840 Riot Points</option>
<option value = "000000001574">Gameforge 6 TRY E-Pin</option>
<option value = "000000001575">50 Hükümdarlık</option>
<option value = "000000001582">10 TL Razer Gold Pin</option>
<option value = "000000001583">25 TL Razer Gold Pin</option>
<option value = "000000001705">20 TL'lik Steam Bakiyesi</option>
<option value = "000000001706">9000 ZA</option>
<option value = "0187022">10 TL Razer Gold Pin</option>
<option value = "0186479">10 TL Steam Cüzdan Kodu</option>
</select>
<div class = "invalid-feedback">
Please select a game.
</div>
</div>
Вот пример модели, которую я использую:
public class GameBanksDto
{
[DisplayName("Product Code")] public string ProductCode { get; set; }
[DisplayName("Description")] public string ProductDescription { get; set; }
[DisplayName("Unit Price")] public double UnitPrice { get; set; }
[DisplayName("Stock Quantity")] public int Quantity { get; set; }
}
Вот список, который я передаю на страницу Razor:
var gamestock = await _context.GameBanks
.Where(m => m.used == 0)
.Where(n => n.status == 0)
.Where(p => p.status == 2)
.GroupBy(g => new
{
g.ProductCode,
})
.Select(gcs => new GameBanksDTO
{
ProductCode = gcs.Key.ProductCode,
Quantity = gcs.Count(g => g.Quantity)
})
.ToListAsync();
Можно ли добавить количество к соответствующим жестко закодированным значениям в параметрах выбора? (Я предполагаю, что 000000001585 соответствует коду продукта модели.)
<option value = "000000001585">2100 ZA *Stock Quantity:100*</option>
Заранее спасибо.
Поместите свои «жестко закодированные» значения в список или словарь или что-то еще, а затем выведите их на странице Razor с помощью @foreach()
Вы можете изменить свое жестко закодированное значение с помощью jQuery, как показано ниже:
<script>
$(function () {
$("#validationCustom04 > option").each(function () {
var count = '@Model.GameBanksDto.Count';
if (count != '') {
var item = true;
@for (var i = 0; i < Model.GameBanksDto.Count; i++) {
@: item = `@Model.GameBanksDto[i].ProductCode`;
@:if (item == this.value)
@: {
@: var value = this.text;
@: $(this).text(value +" Stock Quantity: "+ '@Model.GameBanksDto[i].Quantity')
@:}
}
}
});
})
</script>
Внутренний код:
public class IndexModel : PageModel
{
public List<GameBanksDto> GameBanksDto { get; set; }
public void OnGet()
{
//for easy testing I hard coded the data
GameBanksDto = new List<GameBanksDto>()
{
new GameBanksDto(){ProductCode = "000000001585",Quantity=12},
new GameBanksDto(){ProductCode = "000000001570",Quantity=34},
new GameBanksDto(){ProductCode = "000000001696",Quantity=32},
new GameBanksDto(){ProductCode = "000000001572",Quantity=33}
};
}
}
Результат:
Когда вы хотели добавить соответствующий параметр «Количество для выбора»? Приложение запускается или когда вы выбираете элемент? И почему вы это сделали? Я думаю, независимо от того, должно это делать или нет, это сложная вещь, которая снижает производительность.