Asp.net core 如何将输入选定行的所有文本传递到操作中?
我在我的项目中有这个视图 我想获得所选每一行的输入文本 如何将输入选定行的所有文本传递到操作中Asp.net core 如何将输入选定行的所有文本传递到操作中?,asp.net-core,asp.net-core-mvc,model-binding,Asp.net Core,Asp.net Core Mvc,Model Binding,我在我的项目中有这个视图 我想获得所选每一行的输入文本 如何将输入选定行的所有文本传递到操作中 <table width="100%" class="table table-striped table-bordered table-hover" id="dataTables-example"> <thead> <tr> <th width="45%">Select</th>
<table width="100%" class="table table-striped table-bordered table-hover" id="dataTables-example">
<thead>
<tr>
<th width="45%">Select</th>
<th width="45%">User Name</th>
<th width="5%">Description</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.TypeList)
{
<tr>
<td>
<input type="checkbox" name=checklist" id="checklist"/>
</td>
<td>
@Html.DisplayFor(modelItem => item.UserName)
</td>
<td>
<input type="text" name="Extradecription"/>
</td>
</tr>
}
</tbody>
如果您试图获得控制器操作代码中显示的两个不同数组,则非选定项的文本将出现问题,复选框的数组将按预期绑定,但说明将不同,请明确,请检查以下示例: 假设我们有一个包含树选项的列表:
- 100-Foo
- 200巴
- 300-扎兹
- 福安
- 扎兹,c
checklist = 100,300
Extradecription = a,null,c
因此,麻烦在于避免为未选择的选项绑定空描述,这很复杂,在这种情况下,我向您推荐一个明确的解决方案:
public class CreateEntity
{
public CreateEntity()
{
Items = new List<SelectedItem>();
}
// Step 3
[BindProperty]
public List<SelectedItem> Items { get; set; }
// Another properties
}
呈现选项列表:
@for (var i = 0; i < Model.Items.Count; i++)
{
<input asp-for="@Model.Items[i].IsSelected" />@Model.Items[i].Name
<input asp-for="@Model.Items[i].Desc" />
<br/>
}
for(var i=0;i[HttpGet]
public IActionResult CreateOption()
{
// Set the items list
var model = new CreateEntity
{
Items = new List<SelectedItem>
{
new SelectedItem{ Code = 100, Name = "Foo" },
new SelectedItem{ Code = 200, Name = "Bar" },
new SelectedItem{ Code = 300, Name = "Zaz" }
}
};
return View(model);
}
[HttpPost]
public IActionResult CreateOption(CreateEntity form)
{
// Retrieve only selected items
var query = form.Items.Where(item => item.IsSelected == true).ToList();
return View();
}
[HttpGet]
public IActionResult CreateOption()
{
//设置项目列表
var模型=新的CreateEntity
{
项目=新列表
{
新建SelectedItem{Code=100,Name=“Foo”},
新建SelectedItem{Code=200,Name=“Bar”},
新建SelectedItem{Code=300,Name=“Zaz”}
}
};
返回视图(模型);
}
[HttpPost]
公共IActionResult CreateOption(CreateEntity表单)
{
//仅检索选定的项目
var query=form.Items.Where(item=>item.IsSelected==true);
返回视图();
}
如果您想了解有关Razor页面中复选框的更多信息,请查看以下链接:
请让我知道此答案是否有用。是否要获取要链接的值或将所有值获取到数组中?将所有值获取到数组中(仅选定行)是否可以显示控制器操作代码?是。更新我的问题请检查我的答案
@for (var i = 0; i < Model.Items.Count; i++)
{
<input asp-for="@Model.Items[i].IsSelected" />@Model.Items[i].Name
<input asp-for="@Model.Items[i].Desc" />
<br/>
}
[HttpGet]
public IActionResult CreateOption()
{
// Set the items list
var model = new CreateEntity
{
Items = new List<SelectedItem>
{
new SelectedItem{ Code = 100, Name = "Foo" },
new SelectedItem{ Code = 200, Name = "Bar" },
new SelectedItem{ Code = 300, Name = "Zaz" }
}
};
return View(model);
}
[HttpPost]
public IActionResult CreateOption(CreateEntity form)
{
// Retrieve only selected items
var query = form.Items.Where(item => item.IsSelected == true).ToList();
return View();
}