web-dev-qa-db-fra.com

Passer la chaîne HTML du contrôleur pour afficher ASP.Net MVC

Quelle est la meilleure façon de passer le bloc de chaînes HTML du contrôleur à la vue dans MVC. Je veux qu'il affiche ce bloc html au chargement de la page. Je vous remercie. Il peut s'agir de n'importe quel code HTML, par exemple

<table style="width:300px">
<tr>
  <td>Jill</td>
  <td>Smith</td> 
  <td>50</td>
</tr>
<tr>
  <td>Eve</td>
  <td>Jackson</td> 
  <td>94</td>
</tr>
</table>

Je veux passer cela sous forme de chaîne du contrôleur à la vue. où il sera affiché en html. Merci.

19
Pratik Bhoir

Dans l'action de votre contrôleur:

ViewBag.HtmlStr = "<table style=\"width:300px\"><tr><td>Jill</td><td>Smith</td> <td>50</td></tr><tr><td>Eve</td><td>Jackson</td><td>94</td></tr></table>";

Ta vue :

@Html.Raw(ViewBag.HtmlStr)
45

Vous pouvez affecter le html dans le contrôleur à ViewBag et accéder au ViewBag dans View pour obtenir la valeur qui est le html

Contrôleur

ViewBag.YourHTML = htmlString;

Voir

<div> @ViewBag.YourHTML </div>

Il vaut mieux pas passer le html du contrôleur à View plutôt passer l'objet ou la collection d'objets à View (fortement tapé view) et rendre html dans View car il est de la responsabilité de View

Contrôleur

public ActionResult YourView()
{
    //YourCode
    return View(entities.yourCollection.ToList());
}

Veiw

<table style="width:300px">
    foreach (var yourObject in Model)
    {
       <tr>
             <td>@yourObject.FirstName</td>
             <td>@yourObject.LasttName</td> 
             <td>@yourObject.Amount</td>
       </tr>      
    }

</table>
6
Adil

La meilleure approche sera de créer une vue partielle et d'ajouter le code HTML renvoyé par celle-ci dans votre vue parent à l'intérieur d'une div de conteneur.

Dans votre vue principale, faites comme ceci:

<div>

    @{

    Html.RenderAction("youraction","yourcontroller")

     }

</div>

dans votre action, procédez comme suit:

public ActionResult youraction()
{
 return View();
}

et votre vue partielle:

@{
Layout = null;
}

<table style="width:300px">
<tr>
  <td>Jill</td>
  <td>Smith</td> 
  <td>50</td>
</tr>
<tr>
  <td>Eve</td>
  <td>Jackson</td> 
  <td>94</td>
</tr>
</table>
2
Ehsan Sajjad

Vous pouvez utiliser ViewBag.YourField Ou ViewData["YourStringName"] Et pour le récupérer dans votre vue. Placez-le là où vous voulez, précédé de @ Comme ceci @ViewBag.YourField Ou @ViewData["YourStringName"].

1
user3383479

Manette

 ViewBag.HTMLData = HttpUtility.HtmlEncode(htmlString);  

Vue

@HttpUtility.HtmlEncode(ViewBag.HTMLData)
1
Murali Murugesan