2014-01-30 4 views
0

У меня есть сайт, который я собираю в Asp.Net, и столкнулся с проблемой, когда я хотел бы, чтобы одна из моих страниц загрузила «другое изображение» для фон страницы. Исходное изображение, которое также используется на протяжении большей части сайта, находится в файле CSS скрипт:Изменение изображения тела объекта Aspx на странице Load - ASP.Net

body 
{ 
    background-image: url('../Images/SkyBackMain.jpg'); 
} 

Однако, на странице, где я хотел бы изменить имидж, я поместил JavaScript в коде позади для события загрузки, но я получаю несколько ошибок. Вот код позади ж/код:

public partial class TechCall : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
    string script = "<script type=\"text/javascript\"> 
     document.body.style.background = \"url('../Images/CPUBack_2nd.jpg')"; 
     document.body.style.backgroundRepeat = 'no-repeat'; 
    </script>\"; 

    ClientScript.RegisterClientScriptBlock(this.GetType(), "background-changer-script", script); 
} 
} 

Я получаю ошибки следующим образом:

  1. "<script type=\"text/javascript\"> - Newline в постоянной ошибке.
  2. \"url('../Images/CPUBack_2nd.jpg')"; - Недействительный термин выражения и ожидаемый.
  3. 'no-repeat'; - Слишком много символов в буквах.
  4. </script>\"; - Ошибка: в качестве оператора можно использовать только назначение, вызов, приращение, декремент и новые выражения объектов.

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

+0

Должно ли это сделать так, почему просто просто написать сценарий на этой конкретной странице, попробуйте также использовать Jquery, это очень простая работа, чтобы сделать это –

ответ

0

Я считаю, что вы забыли сделать надлежащую конкатенации

string script = "<script type=\"text/javascript\">" 
          + "document.body.style.background = \"url('../Images/CPUBack_2nd.jpg')" 
          + "document.body.style.backgroundRepeat = 'no-repeat';" 
          + "</script>\""; 

EDIT здесь это лучший способ сделать это (менее запутанной)

StringBuilder script = new StringBuilder(); 
script.Append("<script type=\"text/javascript\">"); 
script.Append("document.body.style.background = \"url('../Images/CPUBack_2nd.jpg')\";"); 
script.Append("document.body.style.backgroundRepeat = 'no-repeat';"); 
script.Append("</script>"); 
this.ClientScript.RegisterClientScriptBlock(this.GetType(), "changeBackground", script.ToString()); 

пожалуйста, подробнее о том, как для регистрации сценария на стороне клиента со стороны сервера

RegisterClientScriptBlock

+0

, кстати, я не пробовал, что вы сделали в этом javascript-коде –

+0

Это не работает вообще; почему мне нужно сделать это String ...? Это не вход, это фактический код, который должен функционировать. – DesignerMind

+0

Я думаю, вам нужно больше узнать о RegisterClientScriptBlock http://msdn.microsoft.com/en-us/library/btf44dc9%28v=vs.110%29.aspx , вы передаете код javascript как строковый аргумент, вот почему вам нужно объединить все javascript в виде строки, прежде чем вы сможете использовать ее в своем методе загрузки. –

Смежные вопросы