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

如何在选中无数据库数据的语言时显示指定提示消息

问题描述

我有一个可正常工作的语言下拉选择列表,目前的问题是:当选中的语言在数据库中没有对应信息时,如何显示“没有工作人员会说该语言”的提示?我曾尝试在if语句中使用Console.WriteLine输出该消息,但选中无数据的语言时消息并未显示,不确定是代码位置错误还是该方法本身不适用,恳请提供解决方案。

现有代码

视图(View)

@model IEnumerable<Language>

@{ 
    ViewData["Title"] = "FLIP";
}

<html>
<head>
    <title>@ViewData["Title"]</title>
</head>
<body>
    <form id="languageForm" method="post" action="/Home/Results">
        <select name="LanguageList" id="LanguageList">
            <option Value=""> 1) Select a Language . . .</option>
            <option value="American Sign English (ASE)">American Sign English (ASE)</option>
            <option value="American Sign Language (ASL)">American Sign Language (ASL)</option>
            <option value="Arabic: Algerian">Arabic: Algerian</option>
            <option value="Arabic: Egyptian">Arabic: Egyptian</option>
            <option value="Awadhi">Awadhi</option>
            <option value="Azerbaijani">Azerbaijani</option>
            <option value="Bengali">Bengali</option>
            <option value="Bhojpuri">Bhojpuri</option>
            <option value="Chinese: Cantonese">Chinese: Cantonese</option>
            <option value="Chinese: Fukein">Chinese: Fukein</option>
            <option value="Chinese: Jinyu">Chinese: Jinyu</option>
            <option value="Chinese: Mandarin">Chinese: Mandarin</option>
            <option value="Chinese: Min Nan">Chinese: Min Nan</option>
            <option value="Chinese: Wu">Chinese: Wu</option>
            <option value="Creole">Creole</option>
            <option value="Creole-Jamaican">Creole-Jamaican</option>
            <option value="Czech">Czech</option>
            <option value="Dutch">Dutch</option>
            <option value="Esperanza">Esperanza</option>
            <option value="Estonian">Estonian</option>
            <option value="Farsi">Farsi</option>
            <option value="French">French</option>
            <option value="Gaelic">Gaelic</option>
            <option value="German">German</option>
            <option value="Greek">Greek</option>
            <option value="Hausa">Hausa</option>
            <option value="Hebrew">Hebrew</option>
            <option value="Hindi">Hindi</option>
            <option value="Hmong">Hmong</option>
            <option value="Hungarian">Hungarian</option>
            <option value="Icelandic">Icelandic</option>
            <option value="Italian">Italian</option>
            <option value="Japanese">Japanese</option>
            <option value="Kannada">Kannada</option>
            <option value="Korean">Korean</option>
            <option value="Lao">Lao</option>
            <option value="Latin">Latin</option>
            <option value="Maithili">Maithili</option>
            <option value="Marathi">Marathi</option>
            <option value="Malayalam">Malayalam</option>
            <option value="Native American: Blackfoot">Native American: Blackfoot</option>
            <option value="Native American: Cheyenne">Native American: Cheyenne</option>
            <option value="Native American: Chippewa">Native American: Chippewa</option>
            <option value="Native American: Cree">Native American: Cree</option>
            <option value="Native American: Dakota">Native American: Dakota</option>
            <option value="Native American: Lakota">Native American: Lakota</option>
            <option value="Native American: Lenape">Native American: Lenape</option>
            <option value="Native American: Navajo">Native American: Navajo</option>
            <option value="Native American: Ojibwi">Native American: Ojibwii</option>
            <option value="Native American: Oneida">Native American: Oneida</option>
            <option value="Native American: Onodaga">Native American: Onodaga</option>
            <option value="Native American: Paivte">Native American: Paivte</option>
            <option value="Native American: Shoshoni">Native American: Shoshoni</option>
            <option value="Native American: Sioux">Native American: Sioux</option>
            <option value="Niger-Congo: Akan">Niger-Congo: Akan</option>
            <option value="Niger-Congo: Twi">Niger-Congo: Twi</option>
            <option value="Norwegian">Norwegian</option>
            <option value="Oriya">Oriya</option>
            <option value="Panjabi">Panjabi</option>
            <option value="Patois">Patois</option>
            <option value="Polish">Polish</option>
            <option value="Portuguese">Portuguese</option>
            <option value="Romanian">Romanian</option>
            <option value="Russian">Russian</option>
            <option value="Serbian">Serbian</option>
            <option value="Serbo-croatian">Serbo-croatian</option>
            <option value="Sign Language">Sign Language</option>
            <option value="Sindhi">Sindhi</option>
            <option value="Slovaic(Slovak)">Slovaic(Slovak</option>
            <option value="Spanish">Spanish</option>
            <option value="Sunda">Sunda</option>
            <option value="Swedish">Swedish</option>
            <option value="Tagalog">Tagalog</option>
            <option value="Tamil">Tamil</option>
            <option value="Telugu">Telugu</option>
            <option value="Thai">Thai</option>
            <option value="Turkish">Turkish</option>
            <option value="Ukrainian">Ukrainian</option>
            <option value="Urdu">Urdu</option>
            <option value="Vietnamese">Vietnamese</option>
        </select>
        <button type="submit" id="searchButton">Search</button>
        
    </form>

    @if (Model != null && Model.Any())
    {
        <br />
        <h6>Click a OfficerName in the grid below to list detail information on how to contact the officer.</h6>
        <h6>Click a Column Heading to sort the grid</h6>
        <table class="table table-bordered table-striped" style="width:100%;
        background-color: lightgray; border:1px solid black; border-color:black ">
            <thead>
                <tr>
                    <th style="color:blue">Name</th>
                    <th style="color:blue">Fluency</th>
                     

                </tr>
            </thead>

            @foreach (var lang in Model)
            {
                <tr>
                    <td>@lang.LanguageName</td>
                    <td>@lang.Fluency</td>
                </tr>
            }
        </table>
    }   
    
    <script src=https://code.jquery.com/jquery-3.6.0.min.js></script>
    <script>
        $('#selectedLanguage').change(function () {
            $('#languageForm').button();
        });
    </script>
</body>
</html>

控制器(Controller)

public IActionResult Test()
{
    List<string> lang = _Db.Languages.Select(s => s.LanguageName).Distinct().ToList();
    ViewBag.Languages = lang;
    return View();
}

[HttpPost]
public IActionResult Results(string LanguageList)
{
    List<Language> Languages;

    if (string.IsNullOrEmpty(LanguageList))
    {
        Languages = null;
    }
    else
    {
        IQueryable<Language> query = _Db.Languages;

        if (!string.IsNullOrEmpty(LanguageList))
        {
            query = query.Where(s => s.LanguageName == LanguageList);
        }
        Languages = query.ToList();
    }
    ViewBag.SelectedLanguage = Languages;
    ViewBag.Languages = _Db.Languages.Select(s => s.LanguageName).Distinct().ToList();
    return View("Test", Languages);
}
解决方案

首先明确:Console.WriteLine是输出到服务器控制台的,前端页面无法看到,所以这个方法不适用,必须在视图中直接渲染提示文本。

步骤1:修改控制器传递选中语言名称

在Results方法中新增一行代码,把用户选中的语言名称传到ViewBag,用于视图判断是否是主动选择的有效语言:

[HttpPost]
public IActionResult Results(string LanguageList)
{
    List<Language> Languages;

    if (string.IsNullOrEmpty(LanguageList))
    {
        Languages = null;
    }
    else
    {
        IQueryable<Language> query = _Db.Languages;

        if (!string.IsNullOrEmpty(LanguageList))
        {
            query = query.Where(s => s.LanguageName == LanguageList);
        }
        Languages = query.ToList();
    }
    ViewBag.SelectedLanguage = Languages;
    ViewBag.SelectedLanguageName = LanguageList; // 新增:传递选中的语言名称
    ViewBag.Languages = _Db.Languages.Select(s => s.LanguageName).Distinct().ToList();
    return View("Test", Languages);
}

步骤2:修改视图添加无数据提示

在现有表格判断的下方添加else分支,处理无数据的情况:

@if (Model != null && Model.Any())
{
    <!-- 原有表格代码保持不变 -->
}
<!-- 添加以下else分支 -->
else if (!string.IsNullOrEmpty(ViewBag.SelectedLanguageName))
{
    <br />
    <p style="color: red; font-weight: bold;">没有工作人员会说该语言</p>
}

额外优化:修复无效JS代码

视图中原有JS的选择器$('#selectedLanguage')找不到对应元素,因为下拉框ID是LanguageList,如果不需要自动提交功能,直接删除这段JS即可;如果需要选择后自动提交,修改为:

$('#LanguageList').change(function () {
    $('#languageForm').submit();
});

这样,当用户选中某个语言且数据库无对应数据时,页面会显示红色加粗的提示文本;若用户未选择语言(默认空选项),则不会显示提示,符合业务逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:50:53