C #, имеющий контроль над элементами HTML - PullRequest
0 голосов
/ 03 марта 2012

jQuery и JavaScript могут манипулировать DOM как угодно.Но если C # должен что-то отправлять клиенту, то, насколько мне известно, мы можем только пользовательский объект Response для записи чего-либо в браузер.Теперь, это будет писать текст в браузере, но мы не можем контролировать, где он будет писать.Есть ли в любом случае, что мы можем управлять из C #, что-то вроде:

"Это текст, и я хочу, чтобы он был innerHTML какого-то конкретного DIV"?

Ответы [ 6 ]

3 голосов
/ 03 марта 2012

У вас есть два способа сделать что-то подобное.

  1. Сделайте ваш div runat="server", и тогда он станет доступным из внутреннего интерфейса для манипуляции
  2. Зарегистрируйте вызов JavaScriptиспользуя ClientScriptManager.RegisterClientScriptBlock и манипулируя div таким образом.

Но также, как Чак упомянул в своем комментарии - это довольно странная вещь в ASP.NET.По большей части вы будете использовать серверные элементы управления Label, Literal и т. Д. Для добавления и управления текстом на странице вместо непосредственного изменения собственных элементов DOM.

1 голос
/ 03 марта 2012

Это в VB.NET, но я уверен, что C # имеет эквивалент. Просто добавьте JavaScript, чтобы делать то, что вы хотите.

ClientScript.RegisterStartupScript(Me.GetType, "myScript", 
    String.Format("<script>document.getElementById('{0}').innerHTML = '{1}';</script>", elementID, html))
1 голос
/ 03 марта 2012

Вы можете установить внутренний HTML-код div из своего кода. Просто добавьте атрибут runat = "server" в div

<div id="divUserInfo" runat="server"></div>

и в вашем коде позади

string strHtml="<h3> User Name </h3><p>User description</p>";
divUserInfo.innerHtml=strHtml;
1 голос
/ 03 марта 2012

Не совсем так работает интернет.Когда ваш браузер переходит на веб-страницу, он отправляет запрос на сервер.Сервер что-то отвечает.Если он пытается показать всю веб-страницу, ему нужен HTML-код всей страницы обратно.C # включает веб-сервер.

Когда вы переходите на другую страницу, вы не изменяете существующую страницу;Вы получаете совершенно новую страницу назад.Мы используем JavaScript, чтобы обойти это, позволяя ему вызывать веб-серверы и использовать полученную информацию для изменения HTML-кода на странице, о которой он знает, потому что он работает на стороне клиента.нет.

0 голосов
/ 03 марта 2012

Из этой статьи на MSDN :

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

  protected void Page_Load(object sender, EventArgs e)
  {
    Message.InnerHtml = Server.HtmlEncode("Welcome! You accessed this page at: " + DateTime.Now);
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HtmlContainerControl Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <span id="Message" runat="server"></span>    
    </div>
    </form>
</body>
</html>    
0 голосов
/ 03 марта 2012

.NET предоставляет платформы для этого - проверьте WebForms или MVC

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