c# - 如何使用本机(非 ASP)HTML 标记发送多个选择列表选项?
问题描述
我有 Razor 生成的选择列表,启用了多个选择选项
我正在努力发送它,因为在控制器中我的Cars
列表是空的,为空。
<select multiple class="form-control">
@if (Model != null)
{
for (int i = 0; i < Model.CarsModels.Count(); i++)
{
var car = Model.CarsModels[i];
if (...)
{
<option name="Manufacturer.Cars[@i].Name" value="@car" selected>@car</option>
}
else
{
<option name="Manufacturer.Cars[@i].Name" value="@car">@car</option>
}
}
}
</select>
public class Car
{
public string Name { get; set; }
}
public class Manufacturer
{
public List<Car> Cars { get; set; } = new List<Car>();
}
Model.CarsModels = 只是一个字符串列表。
同时这个工作正常,但它是一个输入框,而不是选择列表的选项:
<input name="Manufacturer.Cars[0].Name" class="form-control" value="default"/>
解决方案
通常当您有一个选择时,您希望将所选选项的值传递给后端。换句话说,您想要传递的只是unique value of the option
(例如:id、名称、代码等)而不是complex object itself
.
因此,为了使您的代码正常工作,您需要具备以下条件:
public class ManufacturerViewModel
{
public List<string> Cars { get; set; }
}
风景:
<select name="Cars" multiple class="form-control">
@if (Model != null)
{
for (int i = 0; i < Model.CarsModels.Count(); i++)
{
var car = Model.CarsModels[i];
if (...)
{
<option value="@car" selected>@car</option>
}
else
{
<option value="@car">@car</option>
}
}
}
</select>
推荐阅读
- java - `groovyConsole` 无法在带有 java 8 的 Ubuntu 18.04 上启动,如何解决?
- yarnpkg - 如何正确删除纱线工作区?
- c# - 使用泛型作为返回类型和参数
- react-native - 导入文件时选项卡导航器不起作用
- mongodb - MongoDB从数组返回内部文档
- java - 当在java中为每个.class文件加载一个类时,为什么会创建单独的Class Type对象?
- android - 请确保您在类路径中有所需的依赖项:class com.google.android.gms.vision.barcode.Barcode
- cordova - 运行 android –livereload ERR_INVALID_RESPONSE
- c# - 在天蓝色函数中编译 c# 代码时的点网 dll 路径
- java - JPA Criteria API:使用 IF 条件聚合多个列