I am currently writing a small templating system in ASP.NET to allow users to add content. For example, the user can enter the string (variable type is string).
topHeader[x] = "They think it's all over. It is now!";
However, one change that's needed is the ability to add some basic HTML tags within this content, so the following can be done
topHeader[x] = "They think it's all over. <strong>It is now!</strong>" or
topHeader[x] = "They think it's all over. <a title="Football News" href="URL">It is now!</a>";
If you add such things into strings now they are not formatted as HTML, but I want to somehow escape them so that they can be. Naturally I've looked on the Internet for the answer, but as Razor is fairly new there's not much out there to help me out.
When I run it the italic attribute works on the second item, but not on the first. I'm guessing it doesn't work because it's being passed as a literal string and the html formatting is lost.
How can this be made to work?
The reason I ask is because in my project, the text for the list item is stored in a database and I want the ability to include formatting for the item at the database level.
Code: @Html.Raw("hello <i>world</i>")
However, I am not getting the result I need, so here is a bit more code....
Code: @helper addNodes(dcNode As DocumentContent) @<li id=@dcNode.Id> @dcNode.nodeTitle <--This results in "White Papers - <i>New</i>" @Html.Raw(dcNode.nodeTitle) <--The truncates the string at the tag and results in "White Papers -" @If dcNode.children.Count > 0 Then @For Each childNode As DocumentContent In dcNode.children.Values @<ul id=@dcNode.nodeTitle>@addNodes(childNode)</ul> Next End If </li> End Helper
This is a recursive helper that populates node for a jsTree and works fine, but the inline html is not working. Here is what the result looks like.
The text for each li is shown twice because I am showing it once without and once with HTML.RAW. Notice the "White Paper" item... the second text is truncate at the <i> tag.Why is this and how can I fix it?
As ScottGu says in his blog post «by default content emitted using a @ block is automatically HTML encoded to better protect against XSS attack scenarios». My question is: how can you output a non-HTML-encoded string?
For the sake of simplicity, pls stick to this simple case:
@{ var html = "<a href='#'>Click me</a>" // I want to emit the previous string as pure HTML code... }
On UI Ajax calendar control is used to allow the user Expiry Date as shown below. As this is one of the controls in search, when the Search button is pressed using SQL statement (copied below) data is retrieved from ExpiryDate column of the table. The table creator declared the column type as string and the dates are saved as single digits(Example: 2/2/10 sometimes and sometime as double digits (Example: 02/02/10) I like to know the best practice in retrieving both type of strings from database table. Calendar control
[Code]....
SQL(part of stored proc)
[Code]....
with in button click event stored procedure is called to return search results.
In this section, I am trying to manually add in tabs and line spaces so the string is formatted when displayed via the pre tag. But this does not work.
I don't know how to get spaces, tabs, carriage returns into that string which are recognizable by the pre tag, as environment.newline and/or vbtab make no difference.
ORIGINAL QUESTION:
Is it possible to display HTML as text on your page in a formatted manner? For example, it should contain white spaces, tabs etc etc for readability purposes:
From another question, I have learned how to display HTML as text as follows:
What is the appropriate way of rendering a child template?And what's the difference? Both seem to work for me.And why does @Html.RenderPartial() no longer work?
I've looked around and can't find a solution for this and it's driving me mad.I've got a basic MVC2 app (C#) and am trying to display text from a database with the line breaks included. I've used the following:
This is adding the tags to the returned string as I'd expect but when the page renders it actually displays the tag as is instead of rendering the newline. ie. the text seen by the user in the browser is:"Quisque justo erat, iaculis sit amet aliquam eu, porttitor in mauris.<br /><br />Maecenas nisi velit, euismod at molestie vitae, malesuada id turpis. Mauris diam nisl, pretium id molestie nec, posuere posuere neque.<br /><br />Cras sed lectus nisl."
Check out the following: <a href="/test?x=@if (Model.IsTest) { @(1) } else { @(4) }"></a> Is there a better way to write this instead of the @(1) and @(4)?
I'm trying to write a simple declarative html helper: [Code]....
The helper works fine if I embed it into the page I want to use it on. But if I move it to a separate .cshtml file and place that file in the ~/Views/Helpers directory, my view can't be compiled anymore because the helper is not found.According to Scott Gu's blog article on Razor it should work.
The only workaround I have found so far is placing the Html helper in App_Code and Referencing it as @[MYHTMLHELPERFILENAME].Echo(...) . This works but is a bit messy since I don't want to repeat the name of my extension method (Echo.Echo("inputstring"), nor do I want to put all of my html helpers into one single file (something like MyHtmlHelpers.cshtml).It certainly isn't what Scott announced either, so I guess I must be doing something wrong.
I have a asp.net page that generates a report. For better or for worse, the entire thing is generated using nested tables. I am able to export the page to excel, however I lose all my formatting (can't set column widths, etc). Is there a way to handle this? I'm open to adding any goofy MS Office -specific tags that are required to the html side of it.
If this isn't feasible and if anyone has any other ideas, the requirement is that users need a report that:
a) They can manually touch up with some personalization / area-specific data
b) Needs to be hide/show columns based on user's location
I don't know if this is possible but I would like to customize some of the HTML helpers autogenerated in the template. For example, I would like to replace the LabelFor with something that will allow me to specify an image with the label and also a ToolTip property so when you hover over the label you get the tool tip.
Why does the gridview put everything in a table?! Is there a way to not have the gridview generate any html what-so-ever and just use what I have in the ItemTemplate?
I have content that I want to load dynamically, the problem is it has some html formatting in it. What control should i pull the text into, is there a way to pull the text into a div or a label, along with the formatting?
We have a service that generates a report (using word templates and a 3rd party library), and then returns a string in HTML. While this HTML isn't great - its formatted correctly in this string. We want this HTML to show up on a page - format intact. What we currently have done is set an ASP.net Literal's text element to this string. While this works, I have noticed that it has reformatted the HTML string slightly. For the most part, it looks like it generated a bunch of new CSS classes, and a new style element in the HTML. This HTML does not exist in the string thats being returned. I could filter all of this back out, but wonder if there is a better way. I assume that the Page itself is altering something. What is the best way to display this raw HTML back to the user? I can't directly use a Response.Write(string), because this page does have a few other controls on it.
It's great that Razor HTML encodes by default. However, many times I have HTML in a database and want to display it literally on a page. In WebForms 4, we can use <%= %> and <%: %> to choose between encoding options. Raven's syntax is currently @(new HtmlString(Model.Greeting)).
add a shorter syntax to Razor. Something like @=Model.Greeting or @@Model.Greeting, or something else.
My user filled a textbox with a text that was copied from Microsoft Word. This is a part of the text .
This system is - AUTOMATIC - and it is restricted
Look the symbols before and after the word AUTOMATIC. When I try to write this on a dynamically generated html page using the code bellow, i got this on the screen:
This system is â€" AUTOMATIC â€" and it is restricted
Code used to print the SQL Field:
[Code]....
The - symbol is not a minus symbol, but is a Word minus (-) symbol...
I currently trying to convert a ASP.NET MVC2 application to ASP.NET MVC3 razor. I have a lot custom Html helper methods, which render html output, like the one below, which renders a button with some markup :