Mount html by c#

Asked

Viewed 275 times

3

I believe you have a better way of doing this, because when I did it made perfect sense now I don’t mean anything else, so it gets very confusing:

I have A field in the table that stores the following content:

Descrição: 
O curso visa capacitar o aluno nas diferentes técnicas de microagulhamento, ensinando quando utilizar os diferentes tipos de agulhas em associação com cosmetologia, nutracêutica e recursos estéticos, Com a prática demonstrativa, o aluno poderá compreender a correta condução do procedimento.

Objetivo: 
Capacitar o aluno na técnica de microagulhamento e em como associar com demais recursos estéticos, cosméticos e nutracêuticos.

Público Alvo:
Farmacêuticos
Médicos
Esteticistas
Biomédicos
Fisioterapeutas
Terapeutas Ocupacionais
Enfermeiros

Conteúdo Programático:
Conceito de microagulhamento
Diferentes técnicas de agulhamento
Indicações das técnicas de agulhamento
Mediação do processo inflamatório
Terapia combinada
Tratamento rejuvenescedor
Tratamento clareador

My end result has to be this:

<div class="col-md-8" style="text-align: justify">
    <strong>Descrição:</strong>
    <ul>
        <li>O curso visa capacitar o aluno nas diferentes técnicas de microagulhamento, ensinando quando utilizar os diferentes tipos de agulhas em associação com cosmetologia, nutracêutica e recursos estéticos, Com a prática demonstrativa, o aluno poderá compreender a correta condução do procedimento.
        </li>
    </ul>
    <hr />
    <strong>Objetivo:</strong>
    <ul>
        <li>Capacitar o aluno na técnica de microagulhamento e em como associar com demais recursos estéticos, cosméticos e nutracêuticos.
        </li>
    </ul>
    <hr />
    <strong>Público Alvo:</strong>
    <ul class="star_list">
        <li>Farmacêuticos
        </li>
        <li>Médicos
        </li>
        <li>Esteticistas
        </li>
        <li>Biomédicos
        </li>
        <li>Fisioterapeutas
        </li>
        <li>Terapeutas Ocupacionais
        </li>
        <li>Enfermeiros
        </li>
    </ul>
    <hr />
    <strong>Conteúdo Programático:</strong>
    <ul class="star_list">
        <li>Conceito de microagulhamento
        </li>
        <li>Diferentes técnicas de agulhamento
        </li>
        <li>Indicações das técnicas de agulhamento
        </li>
        <li>Mediação do processo inflamatório
        </li>
        <li>Terapia combinada
        </li>
        <li>Tratamento rejuvenescedor                   
        </li>
        <li>Tratamento clareador                       
        </li>
    </ul>
</div>

Visual result:

Resultado Visual

That is to say,

  1. When there is a two-line break, the next line has either bold;
  2. When there is more than one line break, without having a double line drop, represents a list;

The question is: Is there a way to assemble the html, without using as much IF and ELSE?

<div class="col-md-8" style="text-align: justify">
     <%
        foreach (var conteudo in conteudos)
        {
          primeiro = true;
          foreach (var topico in conteudo.Split(new string[] { "\n" }, StringSplitOptions.None))
          { 
              if (primeiro)
              {
      %>
      <strong>
      <%
              }
              else
              { 
       %>
       <li>
       <%} %>
       <%=topico %>
       <%if (primeiro)
       {
        primeiro = false; 
        %>
        </strong>
         <%
          if (conteudo.Count(f => f == '\n') > 1)
          {
          %>
                    <ul class="star_list">
                        <%
                      }
                      else
                      { %>
                        <ul>
                            <%} 
                            }
                              else
                              { %>
                    </li>
                    <%} 
                       } %>
                        </ul>
                        <hr />
                        <%} %>
                </div>
  • What is the question?

  • A better way to assemble html.

  • @Diegozanardo is Webforms or MVC?

  • Using the framework’s web controls is a good call.

  • @Maria, Webforms

  • Then there are the components, for example the repeater which is a good solution, but, I need to understand in your case what the usability of this and with Peater would not need many if or none, in fact it is not practical to put if in webforms, if you contextualize me better I can help you solve your problem, just remembering that there is crazy already wanting to close your question if you have not had time to the least of an answer!

  • 1

    @Maria, I made an issue, I believe it’s clearer now.

  • @Diegozanardo do this with Peater!

Show 3 more comments

2 answers

1

You’re putting together an element ul, so my advice is to use control Bulletedlist. There is an example of how to use it at the end of the cited page.

Any more element you want will invariably have a corresponding control. For example:

Tables: Gridview, Dataview;
Text boxes: Textbox;
Large radio options lists: Radiobuttonlist
etc., etc. It is up to you to search.

And since these controls are all from the Framework, you can leave the logic of creating and displaying the data on the server side, in Code Behind. Otherwise, if it is to stay in the same client, I suggest using Javascript.

1


Via Javascript:

function formatarBloco(conteudo)
{
    var resultado = '';
    var blocos = conteudo.split('\n\n');

    blocos.forEach(function(bloco) {
        var partes = bloco.split('\n');

        partes.forEach(function(parte, i) {
            if(i == 0){
                resultado += '<strong>' + partes[0] + '</strong><br/>';

                if (partes.length == 2)
                    resultado += '<ul>';
                else
                    resultado += '<ul class="star_list">';
            }
            else
                resultado += '<li>' + partes[i] + '</li>';

        });

        resultado += '</ul><hr/>';
    });
    return resultado;
}

Example in Jsfiddler.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.