C# ASP.NET Core 3.0 Razor页面选择帮助程序不发布值
我正在尝试从ASP.NET Core 3.0 Razor Pages页面上的下拉列表中发回所选值。我每次都返回默认值。我看不出我错过了什么 代码如下: 第页: 在表格上呈现为以下内容:C# ASP.NET Core 3.0 Razor页面选择帮助程序不发布值,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,我正在尝试从ASP.NET Core 3.0 Razor Pages页面上的下拉列表中发回所选值。我每次都返回默认值。我看不出我错过了什么 代码如下: 第页: 在表格上呈现为以下内容: <select class="form-control" name="ReportSelect" data-val="true" data-val-required="The SelectedReportId field is required." id="SelectedReportId">
<select class="form-control" name="ReportSelect" data-val="true" data-val-required="The SelectedReportId field is required." id="SelectedReportId">
<option value="1">All People</option>
<option value="2">People Starting With T</option>
</select>
所有人
以T开头的人
当我发布这些值时,表单的其余部分会显示出来,但是对于SelectedReportId
,没有显示任何内容。我尝试将类型更改为string,以防出现问题,但它只是传入null而不是0。我还验证了列表是否正确加载(当然,您可以看到它是通过正确呈现HTML加载的)
我尝试了所有我能想到的配置,但没有成功。我甚至将项目克隆到另一台机器上,只是为了在那里进行测试,但我得到了相同的结果
我正在运行Visual Studio 2019 16.4.0 Preview 1.0,该项目是一个.NET Core 3.0项目。在尝试将下拉列表绑定到
SelectedReportId
时,您使用的是ReportSelect
名称,而不指定显式绑定。只需将您的下拉列表名称从ReportSelect
替换为SelectedReportId
,即可解决您的问题
<select asp-for="SelectedReportId" class="form-control" name="SelectedReportId"
asp-items="@(new SelectList(Model.Reports, nameof(ReportsModel.Id),nameof(ReportsModel.ReportName)))">
</select>
希望它能解决您的问题。在尝试将下拉列表绑定到
SelectedReportId
时,您正在使用ReportSelect
名称,而不指定显式绑定。只需将您的下拉列表名称从ReportSelect
替换为SelectedReportId
,即可解决您的问题
<select asp-for="SelectedReportId" class="form-control" name="SelectedReportId"
asp-items="@(new SelectList(Model.Reports, nameof(ReportsModel.Id),nameof(ReportsModel.ReportName)))">
</select>
希望它能解决您的问题。我不确定,但属性名称和select应该相同,对吗?您的
select
似乎被命名为ReportSelect
,并且支持项目似乎是SelectedReportId
@MatJ是的,您是正确的。非常感谢。我不确定,但是属性和select的名称应该是相同的,对吗?您的select
似乎被命名为ReportSelect
,并且支持项目似乎是SelectedReportId
@MatJ是的,您是正确的。非常感谢。非常感谢。我在这方面花了太多时间,错过了显而易见的东西。我完全删除了这个名字,解决了这个问题。谢谢!我在这方面花了太多时间,错过了显而易见的东西。我完全删除了这个名字,这就解决了问题。
<select asp-for="SelectedReportId" class="form-control" name="SelectedReportId"
asp-items="@(new SelectList(Model.Reports, nameof(ReportsModel.Id),nameof(ReportsModel.ReportName)))">
</select>
[BindProperty(Name="ReportSelect")]
public int SelectedReportId { get; set; }