单击按钮后未出现信息 ASP .NET Core MVC

问题描述 投票:0回答:1

我目前有一个在表格中显示语言信息的视图页面和一个编辑链接,该链接将带我进入新的视图页面以编辑语言信息。我试图让所有内容都保留在一页上,这样用户就不会感到困惑。我尝试过使用 Html.RenderPartial 它将呈现视图,但不会带来信息。我已经没有任何想法可以让这项工作成功,任何帮助都将不胜感激。

控制器:

public IActionResult LanguageUpdate (int id)
{
    OfficerLangVM lang = getLanguage(id);

    return View(lang);
}

[HttpPost]
public IActionResult UpdateLang(OfficerLangVM UpdateLang)
{
    MailkitErrors errors = new(ServiceProvider!, Configuration!);

    UserEmail = HttpContext.Session.GetString("UserEmail")!;

    string ConnectionString = connectionStrings.Get("ForeignLanguageConnectString");

    var objLangUpdateConnect = new SqlConnection(ConnectionString);
    var objLangUdDataSet = new DataSet();
    string strLangUpdate = "UpdateLanguage";
    try
    {
        var objCommandlang = new SqlCommand(strLangUpdate, objLangUpdateConnect);
        objCommandlang.CommandType = CommandType.StoredProcedure;

        //Add parameters for input
        objCommandlang.Parameters.AddWithValue("@RowCount", 1);
        objCommandlang.Parameters.AddWithValue("@OfficerKey", UpdateLang.OfficerKey);
        objCommandlang.Parameters.AddWithValue("@LanguageKey", UpdateLang.LanguageKey);
        objCommandlang.Parameters.AddWithValue("@LanguageName", UpdateLang.LanguageName);
        objCommandlang.Parameters.AddWithValue("@Fluency", UpdateLang.Fluency);
        objCommandlang.Parameters.AddWithValue("@CanRead", UpdateLang.CanRead);
        objCommandlang.Parameters.AddWithValue("@CanWrite", UpdateLang.CanWrite);
        objCommandlang.Parameters.AddWithValue("@CanSpeak", UpdateLang.CanSpeak);
        objCommandlang.Parameters.AddWithValue("@CanUnderstand", UpdateLang.CanUnderstand);
        objCommandlang.Parameters.Add("@UserUpdated", SqlDbType.VarChar, 150).Value = "";

        var ObjDataAdapterLang = new SqlDataAdapter(objCommandlang);
        ObjDataAdapterLang.Fill(objLangUdDataSet, "Language"); //FLIPV2 dbo.Language Table
    }
    catch (Exception)
    {
        ViewBag.ErrorMessage = "There has been an error. MAGLOCLEN HelpDesk has been notified.";
        errors.ErrorEmails(UserEmail, "Error occured while updating language for selected officer:\n");
    }

    UpdateLang.Officer = getOfficer(UpdateLang.OfficerKey);
    UpdateLang.syncOfficer();
    return Redirect("LanguageUpdate/" + UpdateLang.LanguageKey);     
}

//Delete language from Database
public IActionResult DeleteLang(int id)
{
    MailkitErrors errors = new(ServiceProvider!, Configuration!);

    UserEmail = HttpContext.Session.GetString("UserEmail")!;

    OfficerLangVM deleteLang = getLanguage(id);

    string ConnectionString = connectionStrings.Get("ForeignLanguageConnectString");

    var objLangDelConnect = new SqlConnection(ConnectionString);
    var objLangDelDataSet = new DataSet();
    string strLangDelete = "DeleteLanguage";
    try
    {
        var objCommandlang = new SqlCommand(strLangDelete, objLangDelConnect);
        objCommandlang.CommandType = CommandType.StoredProcedure;

        //Add parameters for input
        objCommandlang.Parameters.AddWithValue("@RowCount", 1);
        objCommandlang.Parameters.AddWithValue("@LanguageKey", deleteLang.LanguageKey);
        objCommandlang.Parameters.Add("@Username", SqlDbType.VarChar, 150).Value = "debug";

        var ObjDataAdapterLang = new SqlDataAdapter(objCommandlang);
        ObjDataAdapterLang.Fill(objLangDelDataSet, "Language"); //FLIPV2 dbo.Language Table
    }
    catch (Exception)
    {
        ViewBag.ErrorMessage = "There has been an error. MAGLOCLEN HelpDesk has been notified.";
        errors.ErrorEmails(UserEmail, "Error occured while deleting language from officer:\n");
    }

    return RedirectToAction("Editing", new { id = deleteLang.OfficerKey });
}

LangInfo 查看页面:

@model OfficerLangVM

<body>
    <div class="full-width">
        <h4>Language Information</h4>
        <table style="background-color:lightgray; width:75%" class="table table-boardered table-striped" cellpadding="5">
            <thead>
                <tr>
                    <th>Language</th>
                    <th>Fluency</th>
                    <th>Read</th>
                    <th>Write</th>
                    <th>Speak</th>
                    <th>Understand</th>
                    <th>Date Modified</th>
                    <th><!--Edit--></th>
                    <th><!--Delete--></th>
                </tr>
            </thead>
            <tbody>
                <input type="hidden" asp-for="OfficerKey" />
                <input type="hidden" asp-for="AgGuid" />
                <input type="hidden" asp-for="LanguageKey"/>
                @{
                    if (Model.Languages != null)
                        foreach (Language lang in Model.Languages)
                        {
                                <tr id="Info">
                                    <td>@lang.LanguageName</td>
                                    <td>@lang.Fluency</td>
                                    @if (lang.CanRead == true)
                                    {
                                        <td><input type="checkbox" checked="checked" /></td>
                                    }
                                    else
                                    {
                                        <td><input type="checkbox" /></td>
                                    }
                                    @if (lang.CanWrite == true)
                                    {
                                        <td><input type="checkbox" checked="checked" /></td>
                                    }
                                    else
                                    {
                                        <td><input type="checkbox" /></td>
                                    }
                                    @if (lang.CanSpeak == true)
                                    {
                                        <td><input type="checkbox" checked="checked" /></td>
                                    }
                                    else
                                    {
                                        <td><input type="checkbox" /></td>
                                    }
                                    @if (lang.CanUnderstand == true)
                                    {
                                        <td><input type="checkbox" checked="checked" /></td>
                                    }
                                    else
                                    {
                                        <td><input type="checkbox" /></td>
                                    }
                                        <td>@lang.DateUpdated</td>
                                        <td>
                                            <!--Testing to keep user on same view page, doesn't pull an info-->
                                            <input type="button" value="testing" onclick="show(@lang.LanguageKey); hide()"/> 
                                        </td>
                                        <td>
                                            <!--This works just takes user to new view page-->
                                            <a asp-action="LanguageUpdate" asp-route-id="@lang.LanguageKey">Edit</a>
                                        </td>
                                        <td>
                                            <a asp-action="DeleteLang" asp-route-id="@lang.LanguageKey">Delete</a>
                                        </td>
                                </tr>

                                <!--Toggle between divs, LanguageUpdate doesn't work (WIP)-->
                                <tr style="display:none" id="@lang.LanguageKey">
                                @{
                                    Html.RenderPartial("~/Views/Agency/LanguageUpdate.cshtml");
                                }
                                </tr>
                        }
                }
            </tbody>
        </table>
    </div>

    <script type="text/javascript">
        function show(key) {
            document.getElementById(key).style.display = "block";
        }

        function hide() {
            document.getElementById("Info").style.display = "none";
        }
    </script>

    <style>

        .body-container {
            /*remove the container default padding attribute*/
            /*padding-left: 0px !important;
                    padding-right: 0px !important;*/
            /*increase width as per your need*/
            max-width: 100%;
        }
    </style>

</body>

语言更新视图:

@model OfficerLangVM

<form asp-action="UpdateLang" method="post">
    <input type="hidden" asp-for="OfficerKey" />
    <input type="hidden" asp-for="AgGuid" />
    <input type="hidden" asp-for="LanguageKey" />
    @{
        if (Model != null)
        {
            <td>
                <select asp-for="LanguageName">
                    <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>
            </td>
            <td>
                <select asp-for="Fluency">
                    <option value="1) Limited Proficiency">1. Limited Proficiency</option>
                    <option value="2) Novice">2. Novice</option>
                    <option value="3) Intermediate">3. Intermediate</option>
                    <option value="4) Advanced">4. Advanced</option>
                    <option value="5) Native Speaker">5. Native Speaker</option>
                </select>
            </td>
            @if (Model.CanRead == true)
            {
                <td>
                    @Html.CheckBoxFor((modelItem => Model.CanRead))
                </td>
            }
            else
            {
                <td>
                    @Html.CheckBoxFor((modelItem => Model.CanRead))
                </td>
           }
           @if (Model.CanWrite == true)
           {
                <td>
                    @Html.CheckBoxFor((modelItem => Model.CanWrite))
                </td>
           }
           else
           {
               <td>
                   @Html.CheckBoxFor((modelItem => Model.CanWrite))
               </td>
           }
           @if (Model.CanSpeak == true)
           {
                <td>
                    @Html.CheckBoxFor((modelItem => Model.CanSpeak))
                </td>
           }
           else
           {
                <td>@Html.CheckBoxFor((modelItem => Model.CanSpeak))</td>
           }
           @if (Model.CanUnderstand == true)
           {
                <td>
                    @Html.CheckBoxFor((modelItem => Model.CanUnderstand))
                </td>
           }
           else
           {
                <td>@Html.CheckBoxFor((modelItem => Model.CanUnderstand))</td>
           }
           <td>@Model.DateUpdated</td>
           <td>
                <input type="submit" value="Update" class="btn btn-primary" style="background-color:lightgray; color:black" />
           </td>
           <td>
                <input type="submit" value="Delete" class="btn btn-primary" style="background-color:lightgray; color:black" asp-action="DeleteLang" asp-route-id="@Model.LanguageKey" />
           </td>
           <td>
                <input type="submit" class="btn btn-primary" asp-action="Editing" asp-route-id="@Model.OfficerKey" value="Cancel" style="background-color:lightgray; color:black" />
           </td>            
        }
    }

    <!--<p>Edit the details of the selected officer and click the <b>Update</b> link in the grid above to save the changes, or click the <b>Delete</b>
                link to permanently delete this item.
            <p>Click the <b>Cancel</b> link to abandon any changes made to the item.</p>-->
            
</form>

    <style>

        .body-container {
            /*remove the container default padding attribute*/
            /*padding-left: 0px !important;
                    padding-right: 0px !important;*/
            /*increase width as per your need*/
            max-width: 100%;
        }
    </style>



view asp.net-core-mvc .net-6.0
1个回答
0
投票

您需要将 OfficeLangVM 模型传递到 LanguageUpdate 视图,如下所示:

<tr style="display:none" >
    @{
        Html.RenderPartial("~/Views/Agency/LanguageUpdate.cshtml",Model);
    }
</tr>

您可以阅读从部分视图访问数据了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.