javascript 我们可以在www.example.com core 6.0 ef中通过for循环在Model:PageModel级别定义类吗Asp.net?

9udxz4iz  于 2022-12-10  发布在  Java
关注(0)|答案(1)|浏览(100)

我有一个页面,让用户添加输入字段(最多10个)的Javascript,如果他们想要的。因此,我做了一个对象类调用“项目_PC”,并定义“Items_PC1”到“Items_PC10”为asp-for="”用法。
当最大值为10时是可以的,但如果最大值为100,我需要手动定义100次,我认为这不是一个聪明的方法,而且代码非常难看。有没有方法通过for循环定义它?
我使用javascript添加输入字段:

var item = 1;
divtest.innerHTML = ... + 'asp-for"Items_PC' + item + '.model"' + ...

Index.cshtml:

@page
@model KelseyWeb.Pages.IndexModel
@{
}

<form id="form" method="post" autocomplete="off">
    <select id="mySelect" name="values" style="width:95%; height:30px" class=" ms-3">
        <option>Desktop/Notebook</option>
        <option>Monitor</option>
        <option>Others</option>
    </select>
    <input class="" style="width:90px; float:right; font-size:15px" type="button" onclick="add_RequestedItems_fields();" value="Add More" />
    <div class="mb-3" id="1_RequestedItems_fileds">

    </div>
</form>

@section Scripts{
    <script>
        var item = 0;

        function add_RequestedItems_fields() {
            if(item <10){
                item++;
                var objTo = document.getElementById('1_RequestedItems_fileds')
                var divtest = document.createElement("div");
                if (document.getElementById("mySelect").value.toString() == "Desktop/Notebook") {
                    divtest.innerHTML = '<div class="border mt-3 py-3 pe-3" style="display:block">' +
                                            '<input type="text" asp-for="Items_PC' + item + '.Model" value="Desktop/Notebook"/>'+
                                    '</div>';
                }
            }
            objTo.appendChild(divtest)
         }
    </script>
}

Index.cshtml.cs

namespace KelseyWeb.Pages
{
    public class IndexModel : PageModel
    {
        public Items_PC Items_PC1 { get; set; }
        public Items_PC Items_PC2 { get; set; }
        public Items_PC Items_PC3 { get; set; }
        public Items_PC Items_PC4 { get; set; }
        public Items_PC Items_PC5 { get; set; }
        public Items_PC Items_PC6 { get; set; }
        public Items_PC Items_PC7 { get; set; }
        public Items_PC Items_PC8 { get; set; }
        public Items_PC Items_PC9 { get; set; }
        public Items_PC Items_PC10 { get; set; }

        public void OnGet()
        {
        }
    }

    public class Items_PC
    {
        public int Unit { get; set; }
        public string Model { get; set; } = null!;
        public string Spec { get; set; } = null!;
        public string WindowsVersion { get; set; } = null!;
        public string Warranty { get; set; } = null!;
    }


    public class Items_Monitor
    {
        public int Unit { get; set; }
        public string Model { get; set; } = null!;
        public string Warranty { get; set; } = null!;
    }

    public class Items_Others
    {
        public int Unit { get; set; }
        public string Model { get; set; } = null!;
        public string Spec { get; set; } = null!;
    }
}

我尝试使用for循环,但收到错误- CS1519类、记录、结构或接口成员声明中的标记“for”无效。
我希望代码更好。

bwntbbo3

bwntbbo31#

我认为您应该修改页面模型中的属性:

public Items_PC Items_PC1 { get; set; }
        public Items_PC Items_PC2 { get; set; }
        public Items_PC Items_PC3 { get; set; }
        public Items_PC Items_PC4 { get; set; }
        public Items_PC Items_PC5 { get; set; }
        public Items_PC Items_PC6 { get; set; }
        public Items_PC Items_PC7 { get; set; }
        public Items_PC Items_PC8 { get; set; }
        public Items_PC Items_PC9 { get; set; }
        public Items_PC Items_PC10 { get; set; }

结束日期

[BindProperty]
public List<Items_PC> Items_PCs { get; set; }

生成没有asp-xx属性的输入框:

<input type="text" id="Items_PCs[0].Unit" name="Items_PCs[0].Unit/>
   ......
    //other properties you need to insert

相关问题