我需要從表單中獲取一個模型的一組元素。然后將相同的陣列回傳到形狀。模型:
public class Check
{
public int Id { get; set; }
public string Text { get; set; }
public int Number1 {get; set;}
public int Number2 {get; set;}
}
控制器:
[HttpGet]
public IActionResult Check(string tema)
{
IEnumerable<Check> less = _context.Checks.Where(e => e.Text == tema);
return View(less);
}
[HttpPost]
public IActionResult Check(IEnumerable<Check> Checks)
{
return View(Checks);
}
形式:
@model IEnumerable<Check>
@foreach (var check in Model)
{
<form asp-action="Check" asp-controller="Home" method="post">
<p>@check?.Text</p>
<p><input type="text"asp-for="@check.Number1"/></p>
@if(Number1 == Number2)
{<p>ok</p>}
<div class="form-group">
<input type="submit" value="Ok" class="btn btn-default" />
</div>
</form>
}
我的所有東西都適用于一個模型,如果我傳遞一個陣列,我會得到一個空表單。如何解決?
uj5u.com熱心網友回復:
1.如果你只想發布單個模型,但你想接收后端IEnumerable<Check>,你需要添加名稱屬性(name="[0].propertyName")來覆寫asp-for生成的name="check.propertyName"
2.對于您的代碼,它將生成多個帶有提交按鈕的表單。如果要發布陣列模型,則需要<form>在 foreach 回圈之外移動和提交按鈕。
3.如果將陣列模型從視圖發布到控制器。是IEnumerable<Check> Checks一個串列模型,因此模型系結系統會通過[i].propertyName.
4.<p>元素文本不能通過表單提交傳遞到后端。如果要發布它,請嘗試添加隱藏輸入。
如果將陣列模型從視圖發布到控制器,請更改您的視圖,如下所示:
@model IEnumerable<Check>
@{
int i=0; //add this...
}
<form asp-action="Check" asp-controller="Home" method="post">
@foreach (var check in Model)
{
<p>
@check?.Text
<input type="text"asp-for="@check.Text" name="[@i].Text" hidden/> @* //add the hidden input*@
</p>
//add the name...
<p><input type="text"asp-for="@check.Number1" name="[@i].Number1"/></p>
@if(check.Number1 == check.Number2)
{<p>ok</p>}
i ; //add this...
}
<div class="form-group">
<input type="submit" value="Ok" class="btn btn-default" />
</div>
</form>
如果您發布單個模型,請更改您的視圖,如下所示:
@foreach (var check in Model)
{
<form asp-action="Check " asp-controller="Home" method="post">
<p>
@check?.Text
<input type="text"asp-for="@check.Text" name="[0].Text" hidden/> @* //add the hidden input*@
</p>
@*add the name...*@
<p><input type="text"asp-for="@check.Number1" name="[0].Number1"/></p>
@if(check.Number1 == check.Number2)
{<p>ok</p>}
<div class="form-group">
<input type="submit" value="Ok" class="btn btn-default" />
</div>
</form>
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/416852.html
標籤:
