2 回答
TA贡献1862条经验 获得超6个赞
对于单选按钮,我将向您的 BuildSearch 类添加一个名为 GeoAreaId 的属性。单选按钮选择将在回发时模型绑定到此属性。因此,您的 BuildSearch 类变为
public class BuildSearch
{
//Bootstrap date entry
public DateTime StartDate { get; set; }
//Bootstrap date entry
public DateTime EndDate { get; set; }
public int GeoAreaId { get; set; } //added field
//Need this bound to a radio button list
public List<GeoArea> GeoAreas { get; set; }
public BuildSearch()
{
GeoAreas = new List<GeoArea>();
// StartDate = DateTime.Parse(DateTime.Now.AddDays(-31).ToShortDateString());
// EndDate = DateTime.Parse(DateTime.Now.ToShortDateString());
GeoAreas.Add(new GeoArea { GeoAreaItem = "Region", Id = 0 });
GeoAreas.Add(new GeoArea { GeoAreaItem = "Manager1", Id = 1 });
GeoAreas.Add(new GeoArea { GeoAreaItem = "Manager2", Id = 2 });
}
public class GeoArea
{
public int Id { get; set; }
public string GeoAreaItem { get; set; }
}
}
你的控制器中的 get 方法看起来像这样
public IActionResult Search()
{
var buildSearch = new BuildSearch();
return View(buildSearch);
}
你的视图需要看起来像这样
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@model BuildSearch
<form asp-controller="Home" asp-action="Search" method="post">
<label asp-for="StartDate">Start date</label>
<input asp-for="StartDate" />
<label asp-for="EndDate">End date</label>
<input asp-for="EndDate" />
<fieldset>
<legend>
GeoArea
</legend>
@foreach (var item in Model.GeoAreas)
{
<input type="radio" name="GeoAreaId" value="@item.Id" />
@item.GeoAreaItem
}
</fieldset>
<input type="submit" />
</form>
对于单选按钮,请注意 name 属性如何与我添加到 BuildSearch 类中的新属性 GeoAreaId 相匹配。这对于模型绑定的工作非常重要。
然后你的控制器中的 post 方法将需要如下所示
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Search(BuildSearch buildSearch)
{
//...
}
要查看发生了什么,请在此方法中设置一个断点。运行代码,在表单中输入一些值,然后单击提交。当代码停止在 buildSearch 上时,您将看到模型绑定已起作用。属性 StartDate、EndDate 和 GeoAreaId 将包含表单中所需的值。
TA贡献1798条经验 获得超7个赞
将数据放入视图模型中,您将执行类似的操作
public async Task<IActionResult> Index()
{
var movies = await _context.Movies.ToList();
if (movies == null)
{
return NotFound();
}
return View(movies);
}
然后,您将需要该表格来对您的操作进行后续操作,例如
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(int id, [Bind("ID,Title,ReleaseDate,Genre,Price")] Movie movie)
{
if (ModelState.IsValid)
{
//post to api here
return RedirectToAction(nameof(Index));
}
return View(movie);
}
您必须将模型或视图模型传递到 html 类中,如下所示
@model MvcMovie.Models.Movie
@{
ViewData["Title"] = "Edit";
}
<h1>Edit</h1>
<h4>Movie</h4> etc etc
- 2 回答
- 0 关注
- 107 浏览
添加回答
举报