user11690110
user11690110

Reputation:

ASP Core MVC: Pass Html String from Controller into View with variables

I would like to pass Variables into an HTML screen and place on the screen. Currently using Net Core.

This question is only for regular .Net and does not seem to work. Pass Html String from Controller to View ASP.Net MVC

Test Controller:

_cardtitle = "Green Tree Title";
_cardtext = "Oak tree with leaves";
_imageurl = "https://images.unsplash.com/reserve/bOvf94dPRxWu0u3QsPjF_tree.jpg?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=60"

public IActionResult Test(string _cardtitle, string _cardtext)
{

    ViewBag.CardTitle = _cardtitle;
    ViewBag.CardText = _cardtext;
    ViewBag.ImageURL= _imageurl;

    ViewBag.Cardstring = @"<div class=""card"" style=""width: 18rem;"" >
<img class=""card -img-top"" src =""https://images.unsplash.com/reserve/bOvf94dPRxWu0u3QsPjF_tree.jpg?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=60"" alt =""Card image cap"" >
<div class=""card -body"" >
    <h5 class=""card -title"" > @ViewBag.CardTitle</h5>
    <p class=""card -text"">@ViewBag.CardText</p>
</div>
</div>";
    return View();
}

Test.cshtml

@Html.Raw(ViewBag.Cardstring)

Right now I only see @ Ampersand Variables,

Picture HTML Image

Upvotes: 0

Views: 2814

Answers (1)

Nashm&#225;r
Nashm&#225;r

Reputation: 392

You are displaying your ViewBag wrong.

Change Html.Raw(ViewBag.Cardtest) to Html.Raw(ViewBag.Cardstring)

EDIT: According to my comments this should work for you. You need to pass @ViewBag.CardTitle and @ViewBag.CardText as properties not as part of string.

ViewBag.Cardstring = "<div class=\"card\" style=\"width: 180rem;\"><img class=\"card -img-top\" src =\"https://images.unsplash.com/reserve/bOvf94dPRxWu0u3QsPjF_tree.jpg?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=60\" alt =\"Card image cap\"><div class=\"card -body\" ><h5 class=\"card -title\" >" + @ViewBag.CardTitle +"</h5><p class=\"card -text\">" + @ViewBag.CardText + "</p></div></div>";

Upvotes: 1

Related Questions