Как вызвать функцию JavaScript из элемента управления внутри мастер-страницы? - PullRequest
1 голос
/ 20 марта 2009

У меня есть мастер-страница с контролем входа в систему. Когда нажата кнопка «Вход», я бы хотел, чтобы диалоговое окно JQuery всплыло, если срок членства пользователя истекает в течение 30 дней, иначе он просто войдет в систему как обычно. Я не могу понять, как это сделать. Я выложу части кода:

Вот код JavaScript:

<script type="text/javascript">
    function showjQueryDialog() {
        $("#dialog").dialog("open");
    }

    $(document).ready(function() {
        $("#dialog").dialog({
            autoOpen: false,
            modal: true,
            buttons: { "Renew Membership": function() 
                     { $(this).dialog("close"); } }
        });
    });
</script>

Кнопка входа в систему называется ibtnLoginButton и является частью кода:

//Grab the user profile.
UserProfiles userProfile = 
             UserProfiles.GetUserProfiles(txtUserName1.Text);

//Calculate the Time Span
TimeSpan timeSpan = userProfile.Expiration.Subtract(DateTime.Now);

if (timeSpan.Days < 30)
{
 //Show JQuery Dialog Here
}
else
{
  //Continue with Login Process.
}

Ответы [ 3 ]

2 голосов
/ 20 марта 2009

как насчет этого?

if (timeSpan.Days < 30)
{
 //Show JQuery Dialog Here
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "showExpiration", "showjQueryDialog()", true);
}
0 голосов
/ 21 марта 2009

Если, как вы сказали, у вас появляется это диалоговое окно jQuery, появляющееся при нажатии кнопки asp: почему бы просто не скрыть кнопку и изменить свой JavaScript, чтобы просто нажать кнопку после загрузки страницы?

0 голосов
/ 20 марта 2009

Почему бы не всегда вызывать метод jquery при нажатии кнопки, а затем определять в методе javascript, хотите ли вы показать диалог? Если нет, просто ничего не делай. Поскольку вы просто проверяете, меньше ли ExpirationDate, чем сейчас + 30 дней, вы можете прекрасно выполнить этот расчет в javascript.

Edit:

Я не могу предоставить вам точное решение, но вот псевдокод, который поможет вам в этом.

Сначала сделайте дату истечения срока действия профиля пользователя доступной в javascript:

<script>
var userProfileExpiresOn = "<asp:Literal ID="userProfileExpiresOn" />";
</script>

Затем отредактируйте ваш метод так, чтобы он выполнял ту логику, которую вы сейчас выполняете на стороне сервера:

<script>
function showjQueryDialog() {
  if (userProfileExpiresOn < (now + 30 days))
    $("#dialog").dialog("open");
}
</script>

Документацию по о работе с датами можно найти в Javascript в W3schools.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...