Member 13174280 Ответов: 2

Imagebutton вызов функции javascript onmouseover


I have some ImageButton, every time the mouse passes over ImageButton I would like to change the content of TextBox


every time OnMouseOver occurs on ImageButton must call the init() function, this happens only 1 time (Page_Load) , after loaded the page does not click anymore


is this 
this.ImageButton6.Attributes.Add("onmouseover", "javascript:init();");


that this
ScriptManager.RegisterStartupScript(Page, this.GetType(), Guid.NewGuid().ToString(), "init();", true);

work only one time (Page_Load)


Что я уже пробовал:

on .aspx файл

<script language="javascript">
function init()
{
<%ChangeMsg();%>; // chiama funzione C#
}
</script>


на .файл CS

protected void Page_Load(object sender, EventArgs e)
        {
            //this.ImageButton6.Attributes.Add("onmouseover", "javascript:init();");
            
            ScriptManager.RegisterStartupScript(Page, this.GetType(), Guid.NewGuid().ToString(), "init();", true);

            var data = File.ReadAllText(Server.MapPath("~//TextFiles/develop.txt"));    //read text file

            BoxStart.Visible = true;
            BoxStart.Text = data.ToString(); //assign text to TextBox
        }


функция c#, вызываемая JS

public void ChangeMsg()
       {
           var data = File.ReadAllText(Server.MapPath("~//TextFiles/Start.txt"));    //read file
           BoxStart.Visible = true;
           BoxStart.Text = data.ToString(); //assign
       }

Gerry Schmitz

Это прискорбная трата драгоценной жизненной энергии.

2 Ответов

Рейтинг:
2

Member 13174280

thank you very much, now I am clearer the dependence Asp.Net / Js; applied the suggestions work.
I only notice that (if i put a breakpoint) on LoadNewMessage, the code stops only at the moment of the page_load, the successlives times executes the code but the breakpoint does not stop the execution (effect of the call JS ? )


Рейтинг:
1

Richard Deeming

Вам нужно изучить учебник о том, как ASP.NET работает - в частности, разница между кодом, который работает на сервере, и кодом Javascript, который работает в браузере.

Если вы посмотрите на визуализированный источник вашей страницы, то увидите, что init функция пуста. Это потому, что ваш ChangeMsg функция запускается один раз, на сервере, когда страница визуализируется.

Функция Javascript не может "вызвать" метод на стороне сервера - для этого вам понадобится запрос AJAX. Но в этом случае вам просто нужно передать второе сообщение в Javascript и обновить элемент:

<script>
function init(){
    var id = "<%= BoxStart.ClientID %>";
    var newMessage = "<%= HttpUtility.JavaScriptStringEncode(LoadNewMessage(), false) %>";
    document.getElementById(id).value = newMessage;
}
</script>
protected void Page_Load(object sender, EventArgs e)
{
    ImageButton6.Attributes.Add("onmouseover", "init();");

    string data = File.ReadAllText(Server.MapPath("~//TextFiles/develop.txt"));
    
    BoxStart.Visible = true;
    BoxStart.Text = data;
}

protected string LoadNewMessage()
{
    return File.ReadAllText(Server.MapPath("~//TextFiles/Start.txt"));
}