首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NumericUpDownField的Blazor多重MatBlazor绑定

使用NumericUpDownField的Blazor多重MatBlazor绑定
EN

Stack Overflow用户
提问于 2021-03-15 09:08:03
回答 2查看 153关注 0票数 1

我对巴兹尔很陌生,一般都是面向发展的新手。

我正在尝试实现网店卡订购,这是代表单一的产品。此外,我希望每张卡上都有MatNumericUpDownField,但我不想创建100个将绑定到100个NumericUpDown字段的字段。我需要一些动态的解决方案。

这是我的密码:

ProductCard

代码语言:javascript
复制
@page "/productcard"
@inherits ProductCardBase

@if (productsList == null)
{
    <div class="spinner"></div>
}
else
{
    <div class="card-deck">
        @foreach (var p in productsList)
        {
        <div class="card m-3" style="min-width: 18rem; max-width:30.5%;">
            <div class="card-header">
                <h3>@p.Caption</h3>
            </div>
            <div class="card-body text-center">
                <h4>Product ID : @p.ProductID</h4>
            </div>

            <img class="" src="@p.Pictures.FirstOrDefault()" />


            @if (p.Pictures.Count > 0)
            {
                <img class="card-img-top" src="@convertImageToDisplay(p.Pictures.FirstOrDefault().PictureDisplay.ToString())" />
            }


            <p>
                <MatNumericUpDownField Label="Quantity"
                                       @bind-Value=@testingNullableDecimal2
                                       DecimalPlaces=0
                                       Minimum=0 Maximum=null>
                </MatNumericUpDownField>
            </p>


            <div class="card-footer text-center">
                <a href=""
                   class="btn btn-primary m-1">View</a>

                <a href="#" class="btn btn-primary m-1">Edit</a>

                <a href="#" class="btn btn-danger m-1">Delete</a>
            </div>

        </div>

        }
    </div>

ProductCardBase

代码语言:javascript
复制
public class ProductCardBase : ComponentBase
{
    [Inject]
    IApiCallService<Product> apiCallService { get; set; }


    Product product { get; set; }
    public bool Result { get; set; }
    public string RecordName { get; set; }
    //public string[] Products { get; set; }
    public bool IsGridViewFiltered { get; set; }
    bool isLoading = true;
    public string SelectedBrand { get; set; }

    protected decimal? testingNullableDecimal2 = null;


    public bool IsVisible { get; set; }

    protected List<Product> productsList { get; set; }


    protected override async Task OnInitializedAsync()
    {
        product = new Product();

        await LoadProducts();
    }


   protected void Click(MouseEventArgs e)
    {
       
        testingNullableDecimal2 += 100;
    }

    private async Task LoadProducts()
    {
        await Task.Delay(500);

        productsList = await apiCallService.GetAllAsList("products");

    }

    protected string convertImageToDisplay(string image)
    {

        if (image != null)
        {
            var fs = string.Format("data:image/jpg;base64,{0}", image);
            return fs;
        }
        return "";
    }
}

在这个例子中,testingNullableDecimal2被绑定到每一张卡上,但是我需要为每一张卡分离它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-15 12:26:22

一种解决方案是将绑定变量(testingNullableDecimal)放入产品模型中。

然后,您可以这样修改代码:

代码语言:javascript
复制
<MatNumericUpDownField Label="Quantity"
                       @bind-Value=@p.testingNullableDecimal2
                       DecimalPlaces=0
                       Minimum=0 Maximum=null>
</MatNumericUpDownField>

顺便说一下,我不熟悉MatBlazor工具,但是设置max value=null看起来很可疑。这是正确的语法吗?

票数 1
EN

Stack Overflow用户

发布于 2021-03-16 07:46:25

杰森·D的选择很好。我经常使用的一种技术是传递接口列表,而不是实现。然后,您可以有一个扩展来公开显示内容:计数器,是否选中了selected,等等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66635123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档