我想创建一个控件,允许用户使用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>

===============>>#1 票数:0

您似乎误解了网站的概念。 您的页面不应该(也绝对不能)一起通信。 每当您请求一个页面时,您都会得到一个新实例,除非将其指定为静态实例,否则...不,不,让我们保留它-您不能。

解决“问题”的常见方法是实施某种Settings文件/数据库表/任何内容,当您将页面保存在管理部分时,这些文件将存储您的设置。 然后,当用户请求您的主页时,您的代码将查看这些设置并确定要执行的操作。

更新:

这不是特定于asp.net,而是所有网站的工作方式。 HTTP是无状态的,您需要以某种方式保留数据。

基本思想如下:

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

您的页面应该与存储机制进行通信,而不是彼此通信,因为正如我已经说过的那样,除非您几乎违反了所有原则,否则这是不可能的。

不要紧,这么多how你保存你的设置,它可以包含对键和值的一个简单的文件。 也许是一个xml文件,或者是一个数据库...你明白了。 只要它可用于您需要的页面并且不违反网站的安全性,就可以了。 这一切都取决于您的需求!

希望我不必展示如何连接数据库并检索值...

  ask by user2247985 translate from so

未解决问题?本站智能推荐:

关注微信公众号