Model Razor页面和DevXPress-在一个单元格中显示多个图像

Model Razor页面和DevXPress-在一个单元格中显示多个图像,model,datagrid,devexpress,razor-pages,Model,Datagrid,Devexpress,Razor Pages,我有一个cshtml页面,一个定义了列的Devextreme数据网格,包含来自模型的数据。我的模型有一些属性,但也有一个ICollection Attachments属性,它是数据库中Atachment ID的列表 在Datagrid中,我有一个CellTemplate,我想在其中为模型中的每个附件Id显示一个按钮。因此,我需要在ID上循环 代码中的XXXXXX部分需要替换为附件计数 我试图访问Model.Attchments.Count,但它不起作用。(foor循环) 我可以在文本框中设置此值

我有一个cshtml页面,一个定义了列的Devextreme数据网格,包含来自模型的数据。我的模型有一些属性,但也有一个ICollection Attachments属性,它是数据库中Atachment ID的列表

在Datagrid中,我有一个CellTemplate,我想在其中为模型中的每个附件Id显示一个按钮。因此,我需要在ID上循环

代码中的XXXXXX部分需要替换为附件计数

我试图访问Model.Attchments.Count,但它不起作用。(foor循环) 我可以在文本框中设置此值,但无法将其传递给dor循环

<code>
    class UFe : U, IUF
    {
        private List<int> _attId;

        internal UFe()
        {
            this._attId = new List<int>();
        }

        public string BookingNr { get; set; }

        public ICollection<int> Attachments
        {
            get => this._attId;
            set
            {
                this._attId = value as List<int>;
            }
        }

        public void AddUAttid(int attId)
        {
            this._attId.Add(attId);
        }
    }
</code>

UFe类:U、IUF
{
私人名单;
内部UFe()
{
这个。_attId=新列表();
}
公共字符串BookingNr{get;set;}
公共ICollection附件
{
get=>这个;
设置
{
这是。_attId=列表中的值;
}
}
公共无效地址(内部阁楼)
{
本._attId.Add(attId);
}
}
以下是我的datagrid的一部分:

<code>              
    @(Html.DevExtreme().DataGrid<IUF>()
                      .ID("MyGrid")
                      .DataSource(d => d.Array().Data(Model.UFeList).Key("BookingNr"))
                      .ShowBorders(true)
                      .ColumnAutoWidth(true)
                      )
.Columns(columns =>
                      { columns.AddFor(m => m.BookingNr).Caption("Number").Alignment(HorizontalAlignment.Right);
                                 .CellTemplate(@<text>
                                            @Html.DevExtreme().TextBox().Name(<b>"tryingToPassThisValue"</b>).Value(new JS("data.Attachments.length")).Visible(true)</code>
<code>
                                            @for (int i = 0; i < XXXXXXXX; i++)
                                                {

                                                <form method="get" asp-page-handler="file">
                                                    <button>
                                                        <img src="att.png">
                                                    </button>
                                                </form>
                                                }
                                </text>);    
</code>

@(Html.DevExtreme().DataGrid())
.ID(“MyGrid”)
.DataSource(d=>d.Array().Data(Model.UFeList).Key(“BookingNr”))
.ShowBorders(正确)
.ColumnAutoWidth(真)
)
.列(列=>
{columns.AddFor(m=>m.BookingNr).Caption(“Number”).Alignment(HorizontalAlignment.Right);
.CellTemplate(@
@Html.DevExtreme().TextBox().Name(“tryingToPassThisValue”).Value(新JS(“data.Attachments.length”)).Visible(true)

@对于(int i=0;i

我想传递Model.Attchments.Count或data.Attachments-length对象而不是XXXXX,但无法使其工作。

您可以使用ERB语法来访问值,如

.CellTemplate(@<text>
                        @Html.DevExtreme().TextBox().Name("tryingToPassThisValue").Value("").Visible(true)
                        <% for (var i = 0; i < data.Attachments.length; i++) { %>
                        <form method="get" asp- page- handler="file">
                            <button>
                                <img src="att.png">
                            </button>
                        </form>

                        <% } %>

                    </text>);
.CellTemplate(@
@Html.DevExtreme().TextBox().Name(“tryingToPassThisValue”).Value(“”)。可见(true)
);
我找到了一个解决方案:

使用当前数据向网格中添加列,然后对其调用JS,如下所示:

columns.Add().DataField("Attachments").Caption("YourCaption").CellTemplate(new JS("function(container, options) {cellTemplate(container, options);}"));
然后编写jourjs函数

<script>
    function cellTemplate(container, options) {
    //Set her your code - in my case thats the form from the previous example.
}
</script>

函数cellTemplate(容器、选项){
//给她设置你的代码——在我的例子中,这是上一个例子中的表单。
}

非常适合我。

它不起作用是因为“