在 asp.net 核心 mvc 中,如何从 select 列表中获取 post 上的 selected 项目,其中只有文本项目?
How do you get a selected item on post from a select list with only text item in asp.net core mvc?
如何从 asp.net 核心 mvc 中只有文本项的 select 列表中获取 selected 项值或 post 上的文本?
模型有一个字符串属性,ChosenText.
目前,ChosenText 在 post 操作方法中始终返回为 null。
标记:
<form asp-action="MakeChange" method="post" id="mainform">
<select name="cars" id="cars" asp-for="ChosenText">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
<button type="submit">Submit</button>
</form>
操作方法:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult MakeChange(TestModel model)
{
if (model.ChosenText.ToUpper() == "VOLVO")
{
}
return View(model);
}
您必须将模型和@Html.AntiForgeryToken() 添加到视图中,并从 select 中删除 id 和 names 属性,因为您正在使用 asp-for 和表单提交
@model TestModel
<form asp-action="MakeChange" method="post" >
@Html.AntiForgeryToken()
<select asp-for="ChosenText">
.....
</form>
恕我直言,因为您使用的是模型,所以最好也创建一个模型
[HttpGet]
public IActionResult Get()
{
var model= new TestModel();
return View("viewName", model);
}
Currently, ChosenText always comes back in the post action method as null.
请注意,asp-for="ChosenText"
将帮助自动为渲染的 html <select>
标签生成 name
和 id
属性。
在您的代码中,我们可以发现您还为 Select Tag Helper 明确指定了 name="cars"
和 id="cars"
。为了使您发布的数据能够按预期绑定到模型 属性,请检查您的模型 class 和 属性 是否定义如下。
public class TestModel
{
[BindProperty(Name = "cars")]
public string ChosenText { get; set; }
//...
//other properties
//...
此外,要解决类似问题,您可以使用发布的数据检查实际请求,并将发布的数据与您的模型属性进行比较。
如何从 asp.net 核心 mvc 中只有文本项的 select 列表中获取 selected 项值或 post 上的文本?
模型有一个字符串属性,ChosenText.
目前,ChosenText 在 post 操作方法中始终返回为 null。
标记:
<form asp-action="MakeChange" method="post" id="mainform">
<select name="cars" id="cars" asp-for="ChosenText">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
<button type="submit">Submit</button>
</form>
操作方法:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult MakeChange(TestModel model)
{
if (model.ChosenText.ToUpper() == "VOLVO")
{
}
return View(model);
}
您必须将模型和@Html.AntiForgeryToken() 添加到视图中,并从 select 中删除 id 和 names 属性,因为您正在使用 asp-for 和表单提交
@model TestModel
<form asp-action="MakeChange" method="post" >
@Html.AntiForgeryToken()
<select asp-for="ChosenText">
.....
</form>
恕我直言,因为您使用的是模型,所以最好也创建一个模型
[HttpGet]
public IActionResult Get()
{
var model= new TestModel();
return View("viewName", model);
}
Currently, ChosenText always comes back in the post action method as null.
请注意,asp-for="ChosenText"
将帮助自动为渲染的 html <select>
标签生成 name
和 id
属性。
在您的代码中,我们可以发现您还为 Select Tag Helper 明确指定了 name="cars"
和 id="cars"
。为了使您发布的数据能够按预期绑定到模型 属性,请检查您的模型 class 和 属性 是否定义如下。
public class TestModel
{
[BindProperty(Name = "cars")]
public string ChosenText { get; set; }
//...
//other properties
//...
此外,要解决类似问题,您可以使用发布的数据检查实际请求,并将发布的数据与您的模型属性进行比较。