I have the following code:
string init = "yes";
string html = "";
foreach (var item in v.Details) {
if (item.Substring(0, 1) != " ")
{
if (init != "yes")
{
html += "</ul>";
}
html += "<p>" + item + "</p><ul>";
}
else
{
html += "<li>" + item.Substring(1) + "</li>";
}
}
The code is in my MVC controller and it creates a string called html. The thing is I don’t think it should be in the controller. I tried to put this into the view and ended up with a huge mess that doesn’t seem to work. Seems I am not very good at coding C within a razor view. I just saw a lot of syntax type errors and confusion between what’s C and what’s HTML.
Can anyone suggest how I could make this code work within a view. Here’s what I used to have:
<ul>
@foreach (var item in Model.Details)
{
<li>@item</li>
}
</ul>
This worked but as you can see I now need more processing. Would it be better to take this out of the view and if so how could I do this. I’m really hoping for a view solution but I am confused about where the put the @’s and where to put the brackets.
Any experts at coding C inside or Razor out there?
You are correct. It shouldn’t be in the view neither due to the absolute mess it would create. I think this code is better suited in a custom HTML helper:
which you would invoke in your view:
Remark: there seems to be something wrong with the
initvariable. You are setting its value toyesinitially but you never modify it later.