Razor 页面:复杂的建模绑定不更新模型
Razor page: complex modeling binding not updating model
所以我正在尝试创建一个小工具,用户可以在其中 select 几天。但是,我需要一个非常复杂的模型来获取额外数据。
public class DayRange{
...
List<DaySelected> Days
...
}
public class DaySelected{
public bool Selected{ get; set;}
public string DayName {get; set;}
public DaySelected(string Day){
Selected = false;
DayName = day;
}
}
我的 Razorpage 看起来像这样:
@Model DayRange
...
<form asp-action="RegisterSelection" asp-controller="DayRegister">
<table>
@foreach (var Day in Model.Days)
{
<tr>
<td>
<input asp-for=@Day.Selected />
</td>
</tr>
}
</table>
<button type="submit">Confirm</button>
</form>
我的方法 Registerselection 看起来像这样:
[HttpPost]
public IActionResult RegisterSelection(DayRange dr){
...
}
但是,每当我更改任何文本框时,所有 selected 布尔值都保持不变。有人可以帮助我吗?提前致谢!
下面是一个将数据正确传递给操作的演示:
型号:
public class DayRange
{
public List<DaySelected> Days { get; set; }
}
public class DaySelected
{
public bool Selected { get; set; }
public string DayName { get; set; }
public DaySelected()
{
}
public DaySelected(string Day)
{
Selected = false;
DayName = Day;
}
}
查看:
@Model DayRange
<form asp-action="RegisterSelection" asp-controller="DayRegister">
<table>
@{ var i = 0;}
@foreach (var Day in Model.Days)
{
<tr>
<td>
<input asp-for=@Day.Selected name="Days[@i].Selected" />
@Day.DayName
<input asp-for=@Day.DayName name="Days[@i].DayName" hidden />
</td>
</tr>
i ++;
}
</table>
<button type="submit">Confirm</button>
</form>
结果:
所以我正在尝试创建一个小工具,用户可以在其中 select 几天。但是,我需要一个非常复杂的模型来获取额外数据。
public class DayRange{
...
List<DaySelected> Days
...
}
public class DaySelected{
public bool Selected{ get; set;}
public string DayName {get; set;}
public DaySelected(string Day){
Selected = false;
DayName = day;
}
}
我的 Razorpage 看起来像这样:
@Model DayRange
...
<form asp-action="RegisterSelection" asp-controller="DayRegister">
<table>
@foreach (var Day in Model.Days)
{
<tr>
<td>
<input asp-for=@Day.Selected />
</td>
</tr>
}
</table>
<button type="submit">Confirm</button>
</form>
我的方法 Registerselection 看起来像这样:
[HttpPost]
public IActionResult RegisterSelection(DayRange dr){
...
}
但是,每当我更改任何文本框时,所有 selected 布尔值都保持不变。有人可以帮助我吗?提前致谢!
下面是一个将数据正确传递给操作的演示:
型号:
public class DayRange
{
public List<DaySelected> Days { get; set; }
}
public class DaySelected
{
public bool Selected { get; set; }
public string DayName { get; set; }
public DaySelected()
{
}
public DaySelected(string Day)
{
Selected = false;
DayName = Day;
}
}
查看:
@Model DayRange
<form asp-action="RegisterSelection" asp-controller="DayRegister">
<table>
@{ var i = 0;}
@foreach (var Day in Model.Days)
{
<tr>
<td>
<input asp-for=@Day.Selected name="Days[@i].Selected" />
@Day.DayName
<input asp-for=@Day.DayName name="Days[@i].DayName" hidden />
</td>
</tr>
i ++;
}
</table>
<button type="submit">Confirm</button>
</form>
结果: