Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 使用枚举选择Asp.net核心剃须刀页面_Asp.net Core_Select_Razor - Fatal编程技术网

Asp.net core 使用枚举选择Asp.net核心剃须刀页面

Asp.net core 使用枚举选择Asp.net核心剃须刀页面,asp.net-core,select,razor,Asp.net Core,Select,Razor,我正在填充一个selectlist,其中包含枚举中的各种预定义间隔(一周、一个月等): <select asp-for="SelIntvl" asp-items="Html.GetEnumSelectList<KPI.PresetIntervals>()"> </select> 当用户输入开始日期和结束日期时,通过输入按钮应用日期:

我正在填充一个selectlist,其中包含枚举中的各种预定义间隔(一周、一个月等):

            <select asp-for="SelIntvl" asp-items="Html.GetEnumSelectList<KPI.PresetIntervals>()">
            </select>                
当用户输入开始日期和结束日期时,通过输入按钮应用日期:

            <p>
                @*<input type="submit" value="Apply" />*@
                <button class="btn-outline-secondary" type="submit">Apply</button>
            </p>

但是,这一次,在页面上,所选选项未正确更新为“自定义”,而是显示以前选择的间隔。为什么呢?如何获取选择列表以显示正确的选择?非常感谢

这里是一个完整的工作演示:

型号:

public enum PresetIntervals
{
    None = 0,
    Custom = 1,
    PastSixMonths = 2,
}
Privacy.cshtml:

@page
@model PrivacyModel

<form>
    <div>
        StartDate:<input asp-for="StartDate" name="startDate" />
    </div>
    <div>
        EndDate:<input asp-for="EndDate" name="endDate" />
    </div>
    <div class="form-group">
        <label asp-for="SelIntvl" class="control-label"></label>

        <select asp-for="SelIntvl" class="form-control" asp-items="Html.GetEnumSelectList<PresetIntervals>()"></select>
    </div>
    <button class="btn-outline-secondary" type="submit">Apply</button>
</form>
结果:

如果仍然无法在项目中工作,也可以尝试
ModelState.Clear()
重置该值:

if (startDate != null && endDate != null)
{
    ModelState.Clear();
    SelIntvl = PresetIntervals.Custom;
    StartDate = DateTime.Parse(startDate);
    EndDate = DateTime.Parse(endDate);
}

当我添加ModelState时,它起作用了。明白!非常感谢!不客气!
@page
@model PrivacyModel

<form>
    <div>
        StartDate:<input asp-for="StartDate" name="startDate" />
    </div>
    <div>
        EndDate:<input asp-for="EndDate" name="endDate" />
    </div>
    <div class="form-group">
        <label asp-for="SelIntvl" class="control-label"></label>

        <select asp-for="SelIntvl" class="form-control" asp-items="Html.GetEnumSelectList<PresetIntervals>()"></select>
    </div>
    <button class="btn-outline-secondary" type="submit">Apply</button>
</form>
public class PrivacyModel : PageModel
{
    public PresetIntervals SelIntvl { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }

    public IActionResult OnGet(string startDate, string endDate)
    {
        if(startDate == null && endDate == null)
        {
            SelIntvl = PresetIntervals.PastSixMonths;

        }
        if (startDate != null && endDate != null)
        {
            SelIntvl = PresetIntervals.Custom;
            StartDate = DateTime.Parse(startDate);
            EndDate = DateTime.Parse(endDate);
        }
        return Page();
    }
}
if (startDate != null && endDate != null)
{
    ModelState.Clear();
    SelIntvl = PresetIntervals.Custom;
    StartDate = DateTime.Parse(startDate);
    EndDate = DateTime.Parse(endDate);
}