0

ASP.NET MVC4 を使用して、ユーザーが管理サイトからホームページの div ボックスを表示/非表示できるようにするためのコントロールを作成したいと考えています。たとえば、ユーザーが管理サイトから div ボックスを無効にすることを選択した場合、ホーム ページに戻ると div ボックスが消え、div ボックスを表示する場合も同じことが起こります。

私は一日中正解を探していましたが、まだ最良の答えを見つけることができませんでした. そして、管理サイトとホームページをリンクする方法が本当にわかりません。

以下は私の管理ページです。

<div class="section-header">
    <div class="title">
        <img src="@Url.Content("~/Administration/Content/images/ico-configuration.png")" alt="" />
        @T("Manage LoginBox")
    </div>
    <div class="options">
         <input type="submit" name="save" class="t-button" value="@T("Admin.Common.Save")" />
    </div>
</div>
     <script type="text/javascript">
        @*$(document).ready(function () {

            $("#@Html.FieldIdFor(model => model.EnableLoginBoxAtHomePage)").click(toggleLoginBoxEnabled);

            toggleLoginBoxEnabled();
        });*@

        function toggleLoginBoxEnabled() {
            if ($('#@Html.FieldIdFor(model => model.EnableLoginBoxAtHomePage)').is(':checked')) {
                Response.Write("Surprise");
                $('#pnlShowLoginBoxAtHomePage').show();

            }
            else {
                $('#pnlShowLoginBoxAtHomePage').hide();
            }
        }
        function toggleLoginBoxDisabled() {
            if ($('#@Html.FieldIdFor(model => model.DisableLoginBoxAtHomePage)').is(':checked')) {
                $('#pnlHideLoginBoxAtHomePage').hide();
            }
            else {
                $('#pnlHideLoginBoxAtHomePage').show();
            }
        }
    </script>

@Html.ValidationSummary(false)
<table class="adminContent">
        <tr id="pnlShowLoginBoxAtHomePage" onclick="toggleLoginBoxEnabled">

            <td class="adminTitle">
                @Html.LabelFor(model => model.EnableLoginBoxAtHomePage)
            </td>
            <td class="adminData">
                @Html.EditorFor(model => model.EnableLoginBoxAtHomePage)
                @Html.ValidationMessageFor(model => model.EnableLoginBoxAtHomePage)
            </td>
        </tr>
        <tr id="pnlHideLoginBoxAtHomePage" onclick="toggleLoginBoxDisabled">
            <td class="adminTitle">
                @Html.LabelFor(model => model.DisableLoginBoxAtHomePage)
            </td>
            <td class="adminData">
                @Html.EditorFor(model => model.DisableLoginBoxAtHomePage)
                @Html.ValidationMessageFor(model => model.DisableLoginBoxAtHomePage)
            </td>
        </tr>


</table>


}

そして、これはホームページで表示/非表示にしたいdivボックスです:

<div class="block block-loginbox" >
    <div class="title">
        <strong>@T("Login")</strong>
    </div>
    <div class="clear">
    </div>
<div class="listbox" @*id="myloginbox"*@>
    <fieldset class="form-fields returning-wrapper">
            <legend>@T("Account.Login.ReturningCustomer")</legend>
            <dl>
                @using (Html.BeginForm("Login","Customer"))
                {
                    <dd class="message-error">
                        @Html.ValidationSummary(true, T("Account.Login.Unsuccessful").Text)
                    </dd>


                    <dt>
                        @Html.LabelFor(m => m.Email): </dt>
                    <dd>
                        @Html.TextBoxFor(m => m.Email, new { @class = "email", autofocus = "autofocus" })
                        @Html.ValidationMessageFor(m => m.Email)
                    </dd>

                    <dt>
                        @Html.LabelFor(m => m.Password): </dt>
                    <dd>
                        @Html.PasswordFor(m => m.Password, new { @class = "password" })
                        @Html.ValidationMessageFor(m => m.Password)
                    </dd>
                    <dd>
                        @Html.CheckBoxFor(m => m.RememberMe)
                        @Html.LabelFor(m => m.RememberMe)
                    </dd>
                    <dd class="forgot-password">
                        @Html.RouteLink(T("Account.Login.ForgotPassword").Text, "PasswordRecovery")
                    </dd>

                    <dd class="buttons">
                        <input class="button-1 login-button" type="submit" onclick="location.href='@registerUrl'" value="@T("Account.Login.LoginButton")" />
                    </dd>

                }
            </dl>
        </fieldset>
        <div class="clear">
        </div>

     </div>
     </div>
4

1 に答える 1

0

Web サイトの概念を誤解しているようです。あなたのページは一緒に通信すべきではありません (そして間違いなくできません)。ページを要求するたびに、静的として指定されていない限り、新しいインスタンスが取得されます...いいえいいえ、そのままにしておきましょう-できません。

「問題」の一般的な解決策は、管理セクションにページを保存するときに設定を保存する、ある種のSettingsファイル/データベース テーブルなどを実装することです。次に、ユーザーがホームページを要求すると、コードはこれらの設定を調べて、何をすべきかを決定します。

アップデート:

これはasp.net固有のものではなく、すべてのWebサイトの仕組みです。HTTP はステートレスであるため、何らかの方法でデータを永続化する必要があります。

基本的な考え方は次のようになります。

admin page -> load settings -> modify -> save settings
other page -> load settings -> if some setting applies, do something

ページは、互いにではなく、ストレージ メカニズムと通信する必要があります。これは、既に述べたように、ほぼすべての原則に違反しない限り不可能だからです。

設定を保存することは重要ではなくhow、キーと値のペアを含む単純なファイルにすることができます。または、xml ファイル、またはデータベース... アイデアが得られます。必要なページで使用でき、Web サイトのセキュリティを侵害しない限り、問題ありません。それはすべてあなたのニーズ次第です!

データベースに接続して値を取得する方法を示す必要がないことを願っています...

于 2013-04-16T23:23:58.807 に答える