我有一个页面,让用户添加输入字段(最多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”无效。
我希望代码更好。
1条答案
按热度按时间bwntbbo31#
我认为您应该修改页面模型中的属性:
结束日期
生成没有asp-xx属性的输入框: