You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jQuery中调用C#模型函数获取日期列表以避免代码重复?

当然可以啦!你完全不用在jQuery里重复写日期逻辑,直接复用C#里的GetAvailableDateInStrings函数就好,给你两种常用的解决方案,适配不同场景:

方案1:服务器端直接渲染日期选项(适合页面加载时就需要的场景)

这种方法是在页面渲染阶段,让C#函数直接生成下拉框的<option>标签,这样前端只需要处理切换逻辑,不用手动拼接选项内容,完全复用后端的日期判断逻辑。

视图代码(以Razor视图为例)

在你的下拉框元素里,直接遍历C#函数返回的日期列表:

<select id="attendanceReportYear">
    @foreach(var dateStr in Model.GetAvailableDateInStrings())
    {
        <option value="@dateStr">@dateStr</option>
    }
</select>

简化后的jQuery代码

现在只需要处理下拉框的清空/显示逻辑,不用手动添加固定选项:

$(document).ready(function() {
    $("#attendanceReportType").change(function() {
        const reportType = $(this).val();
        const yearDropdown = $("#attendanceReportYear");
        // 提前保存所有选项,避免重复生成
        const allOptions = yearDropdown.html();

        if (reportType === "Class Monthly") {
            yearDropdown.empty().html(allOptions);
        } else {
            // 如果是其他报表类型,可根据需求清空或处理下拉框
            yearDropdown.empty();
        }
    });
});

这个方案的优势是无需额外Ajax请求,页面加载时就生成好所有选项,性能更优,而且完全避免了前后端逻辑重复。

方案2:通过Ajax异步获取日期列表(适合动态加载场景)

如果你的日期列表需要根据用户的其他操作动态生成(比如依赖其他筛选条件),可以把C#函数封装成后端接口,再用jQuery异步调用获取数据填充下拉框。

后端Controller代码

先写一个Action来暴露日期列表的接口:

public ActionResult GetAvailableDates()
{
    // 替换成你实际的模型实例获取方式(比如从服务、Session或数据库)
    var yourModel = new YourModel();
    var dateList = yourModel.GetAvailableDateInStrings();
    // 返回JSON格式数据
    return Json(dateList, JsonRequestBehavior.AllowGet);
}

修改后的jQuery代码

通过Ajax调用后端接口,拿到数据后动态生成下拉框选项:

$(document).ready(function() {
    $("#attendanceReportType").change(function() {
        if ($(this).val() === "Class Monthly") {
            const yearDropdown = $("#attendanceReportYear");
            yearDropdown.empty();

            // 调用后端接口获取日期列表
            $.ajax({
                url: '@Url.Action("GetAvailableDates", "YourController")', // 替换成你的控制器名称
                type: 'GET',
                success: function(dateList) {
                    // 遍历日期列表生成选项
                    $.each(dateList, function(index, dateStr) {
                        yearDropdown.append(`<option value="${dateStr}">${dateStr}</option>`);
                    });
                },
                error: function() {
                    alert('获取日期列表失败,请重试');
                }
            });
        }
    });
});

这个方案的优势是灵活性高,可以根据用户操作动态获取最新的日期列表,适合需要实时更新数据的场景。


内容的提问来源于stack exchange,提问作者KWCham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:03:51