如何使用下拉列表 asp.net core 5 MVC 将数据从视图发送到控制器
How to send data from view to controller with drop down list asp.net core 5 MVC
所以我在 asp.net 核心中做一个项目,我有多个下拉列表,一旦我单击提交按钮,它们应该将数据发送到控制器。问题是我一直无法向控制器发送任何数据。
这是视图的相关部分(现在只有一个下拉列表,但我会添加更多):
@using DemoProjectCar.Models
@model JoinModels
<form asp-action="searchCar">
<label for="carType">car Type:</label>
<select name="carType" id="carType">
<option value="Aucun" name="data">Aucun</option>
@foreach (var car in Model.cars)
{
<option name="data">@Html.DisplayFor(modelItem => car.carType)</option>
}
</select>
<div class="form-group">
<input id="SearchButton" type="submit" value="search" class="btn btn-dark" />
</div>
</form>
这是控制器:
public IActionResult searchCar(String data)
{
//Gets a list of both models in the view
JoinModels join = getJoinModel();
//Whatever i wanna do with the data
return View("Index", join);
}
这是 Join 模型和 carModel
namespace DemoProjectCar.Models
{
public class JoinModels
{
public List<_user> user { get; set; }
public List<_cars> cars { get; set; }
}
}
namespace DemoProjectCar.Models
{
public class _cars
{
public int id { get; set; }
public String carType{ get; set; }
public cars()
{
}
}
}
我知道类似的东西通常会起作用(我认为):
<select asp-for="id" asp-items="@(new SelectList(ViewBag.message,"id","carType"))">
但是因为我有一个连接模型,所以它不起作用
在您的 HTML 中试试这个:
<select asp-for="data" asp-items="@(new SelectList(Model.cars, "id", "carType"))"></select>
并且在您的 ViewModel(JoinModels) 中,您需要创建一个属性以发送到您的 Post 方法:
public class JoinModels
{
// New attribute to receive in your post data
public string data { get; set; }
public List<_user> user { get; set; }
public List<_cars> cars { get; set; }
}
然后在您的 post 方法中 searchCar(String data)
,您将收到选定的 ID。
这里有一个 link 可以帮助您更多:Examples about how to create an dropdopwn
所以我在 asp.net 核心中做一个项目,我有多个下拉列表,一旦我单击提交按钮,它们应该将数据发送到控制器。问题是我一直无法向控制器发送任何数据。
这是视图的相关部分(现在只有一个下拉列表,但我会添加更多):
@using DemoProjectCar.Models
@model JoinModels
<form asp-action="searchCar">
<label for="carType">car Type:</label>
<select name="carType" id="carType">
<option value="Aucun" name="data">Aucun</option>
@foreach (var car in Model.cars)
{
<option name="data">@Html.DisplayFor(modelItem => car.carType)</option>
}
</select>
<div class="form-group">
<input id="SearchButton" type="submit" value="search" class="btn btn-dark" />
</div>
</form>
这是控制器:
public IActionResult searchCar(String data)
{
//Gets a list of both models in the view
JoinModels join = getJoinModel();
//Whatever i wanna do with the data
return View("Index", join);
}
这是 Join 模型和 carModel
namespace DemoProjectCar.Models
{
public class JoinModels
{
public List<_user> user { get; set; }
public List<_cars> cars { get; set; }
}
}
namespace DemoProjectCar.Models
{
public class _cars
{
public int id { get; set; }
public String carType{ get; set; }
public cars()
{
}
}
}
我知道类似的东西通常会起作用(我认为):
<select asp-for="id" asp-items="@(new SelectList(ViewBag.message,"id","carType"))">
但是因为我有一个连接模型,所以它不起作用
在您的 HTML 中试试这个:
<select asp-for="data" asp-items="@(new SelectList(Model.cars, "id", "carType"))"></select>
并且在您的 ViewModel(JoinModels) 中,您需要创建一个属性以发送到您的 Post 方法:
public class JoinModels
{
// New attribute to receive in your post data
public string data { get; set; }
public List<_user> user { get; set; }
public List<_cars> cars { get; set; }
}
然后在您的 post 方法中 searchCar(String data)
,您将收到选定的 ID。
这里有一个 link 可以帮助您更多:Examples about how to create an dropdopwn