mn.sathish Ответов: 2

Получите скрытое значение поля со стороны клиента и сохраните код значения в ASP .Net


Динамически я хочу получить высоту элемента div. На стороне клиента я получаю значение и успешно назначил его скрытому полю.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="HomePage.aspx.cs" Inherits="HomePage_New" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head  runat="server">
    <title>Home Page</title>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <link rel="stylesheet" href="Css/HomePageStyle.css" type="text/css" />
    <script type="text/javascript" src="Script/jquery_min.js"></script>
    <script type="text/javascript" src="JavaScript/DisableBackSpace.js"></script>
    <script type="text/javascript" src="JavaScript/DisableMouseRightClick.js"></script>

    <script type="text/javascript">
        $(document).ready(function () {
            var varHeight = $('#MainDiv').height();
            $('#maincontentpageframe').height($('#MainDiv').height());

            /*Set the value to Hidden Field*/
            $("input[id=hfMainDiv]").val(varHeight);
            /*alert($('#hfMainDiv').val());*/
        });
    </script>

</head>
<body>
    <form id="form1"  runat="server">
    <div class="header">
        <div class="lefttext">
            Welcome to ATM Claims
        </div>
        <div class="righttext">
            <div>
                <label id="lblLoginUserName"  runat="server"></label> <p>|</p>
            </div>
            <div>
                <a id="lnkHomePage" href="welcomepage.aspx" target="mainFrame">Home</a> <p>|</p>
            </div>
            <div>
                <a id="lnkMyProf" href="myprofile.aspx" target="mainFrame">My profile</a> <p>|</p>
            </div>
            <div>
                <a id="lnkChgPwd" href="ChangePassword.aspx" target="mainFrame">Change password</a> <p>|</p>
            </div>
            <div>
                <a href="">Logout</a>
            </div>
        </div>
    </div>
    <table cellspacing="0" id="main">
        <tr>
            <td class="leftnav">
                <div class="leftnavheader">
                    Menu</div>
                <div class="menu">
                    <iframe src="MenuItem.aspx" frameborder="0" style="height: 91.5%; width: 100%;" name="menuFrame">
                    </iframe>
                </div>
            </td>
            <td class="content">
                <div class="MainFrame" id="MainDiv"  runat="server">
                    <iframe src="WelcomePage.aspx" id="maincontentpageframe" style="width: 99.5%; height: 100%;"

                        frameborder="1" name="mainFrame"  runat="server"></iframe>
                </div>
                <asp:HiddenField ID="hfMainDiv" runat="server" ClientIDMode="Static" Value="23" />
            </td>
        </tr>
    </table>
    <div class="footer">
        <div class="footer_wrap">
            © 2013 | All Rights Reserved.
        </div>
    </div>
    </form>
</body>
</html>




В коде позади я пытаюсь получить значение в событии загрузки страницы, но значение ничего не дает.
public partial class HomePage_New : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        lblLoginUserName.InnerHtml = "";
        Session["HomePageMainDivHeight"] = this.hfMainDiv.Value.ToString();
        if(Session["UserID"] != null)
        {
            lblLoginUserName.InnerHtml = "Hi ! "+Session["UserID"].ToString().Trim();
        }
    }
}

2 Ответов

Рейтинг:
19

Bajirao_

Sathish,

I observer some points in your code :

1] As we know, Aspx pages processed at server side and then load to browser. So it will clearly hit your PageLoad first then hit to document.ready.

Hence there is no point in using Jquery at client side if you want value in PageLoad event.

2] You have used "MainDiv" div with runat="server", which may change client side id of div.

Hence possibility of error in $('#MainDiv').height(); statement.

Understanding :
1] You have used iframe and used height parameter in %, its correct in case of responsive UI.

Comments :
If you are ready to use the iframe height value in px instead of % you may follow below solution.

This is my POC, Make correction according to your requirement.
ASP :
    <form id="form1"  runat="server">
    <div id="content"  runat="server" clientidmode="Static">
        <span style="height:30px; width:200px;color:Blue;">This my span...</span>
    </div>
    <asp:HiddenField ID="hdnMyFld2"  runat="server" ClientIDMode="Static" />

    <iframe id="ifXyz" runat="server" clientidmode="Static" src="http://google.com" height="300px" frameborder="1" name="mainFrame"   />
    </form>
C# :
        protected void Page_Load(object sender, EventArgs e)
        {   // i hope you are interested in value more than wherever i assign it.
            hdnMyFld2.Value = Convert.ToString(ifXyz.Attributes["height"]).Replace("px","");
        }


Рейтинг:
1

NagarajDJ

Здравствуйте Мистер Сатиш,

&ЛТ;как ASP:hiddenfield идентификатор="hfMainDiv" атрибут runat="сервер" clientidmode="статический" значение="23" атрибутов xmlns:АСП="#неизвестный"&ГТ;

вам нужна высота Div, и на стороне клиента вы храните ее в скрытом поле, поэтому вам непосредственно присваивается значение "23" скрытому полю.


VICK

Нагарадж... если вы хотите задать какой-то вопрос, чем любезно пользуетесь... "Есть вопрос или комментарий" вариант...

mn.sathish

Привет, Нагарадж диджей... Ваш вопрос верен, но когда я пытался получить желаемый результат, я пробовал разные возможности, такие как установить какое-то значение по умолчанию и заменить его результатом.
Является ли это причиной логики программы. . ,

Bajirao_

Сатиш,

Я наблюдаю некоторые моменты в вашем коде :

1] Как мы знаем, страницы Aspx обрабатываются на стороне сервера, а затем загружаются в браузер. Таким образом, он явно попадет сначала в вашу загрузку страниц, а затем в document.ready.

Следовательно, нет смысла использовать Jquery на стороне клиента, если вы хотите получить значение в событии PageLoad.

2] Вы использовали div "MainDiv"с runat=" server", который может изменить идентификатор div на стороне клиента.

Отсюда и возможность ошибки в операторе $('#MainDiv').height ();.

Понимание :
1] Вы использовали iframe и использовали параметр height в %, это правильно в случае адаптивного пользовательского интерфейса.

Комментарии :
Если вы готовы использовать значение высоты iframe в px вместо % , Вы можете следовать приведенному ниже решению.

Это мой POC, сделайте коррекцию в соответствии с вашим требованием.
ГАДЮКА :
&ЛТ;форме ID="форма form1" атрибут runat="сервер"и GT;
&ЛТ;див ИД="содержание" атрибут runat="сервер" clientidmode="статический"и GT;
в <промежуток стиль="высота:30 пикселей; ширина:200 пикселей;цвет:синий;"&ГТ;это мой пролет...&ЛТ;/службы&ГТ;
< / div>
&ЛТ;как ASP:HiddenField идентификатор="hdnMyFld2" атрибут runat="сервер" ClientIDMode="статический" /&ГТ;

в <iframe в код="ifXyz" атрибут runat="сервер" clientidmode="статический" СРЦ="http://google.com" высота="300px" frameborder="1" наименование="ЭВМ" атрибут runat="сервер" /&ГТ;
< / форма>
С# :
protected void Page_Load(отправитель объекта, EventArgs e)
{//я надеюсь, что вы заинтересованы в ценности больше, чем там, где я ее назначаю.
hdnMyFld2.Значение = Конвертировать.Метод toString(ifXyz.Атрибуты ["высота"]). заменить ("px","");
}

mn.sathish

Привет, Прасашастри, Спасибо за помощь. На самом деле это очень полезно для меня. Теперь я понял, почему скрытое поле возвращает значение как ничто в коде позади в событии загрузки.

Bajirao_

Вы хорошо пришли, надеюсь, вы отметите это как ответ на вопрос.

CodeBlack

обновите свое решение с помощью кода, который работал вместо того, чтобы держать его в поле комментария.