我有字符串消息,我想将HTML代码放入控制器中。 我怎么能这样做?
string message = @"<div style="direction: ltr; width: 700px; margin: 0px auto; font-family:Verdana; font-size:11px; line-height:25px;">
<div style="line-height: 21px; color: rgb(68, 68, 68); font-family: Calibri, sans-serif; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">
<div style="line-height: 21px; min-height: 14px;">
<br class="Apple-interchange-newline" />
<br style="line-height: 21px;" />
</div>
</div>";
但它显示错误。 我怎么能这样做?
答案 0 :(得分:1)
尝试用双引号替换双引号,这些引号位于HTML标记中。
答案 1 :(得分:1)
有很多方法可以做到这一点..
你在asp.net mvc中的表现是不是最佳做法,因为它将你的视图(演示文稿)混合在你的控制器中。
要做到这一点:
1. use TagBuilder and create Each tag and add attributes ..
2. use StringBuilder and use AppendFormat and AppendLine To Format String
and use code variables inside your HTML Markup
3. return some name from controller and control from javascript from
this name the html you have to render (you can use Jquery templates)
使用 MVCHtmlString 创建html
答案 2 :(得分:1)
您可以使用MvcHtmlString
在控制器端创建html元素
public static MvcHtmlString CreateHTML<TModel, TProperty>(this HtmlHelper<TModel> helper, string yourstring)
{
return MvcHtmlString.Create(htmlString);
}
或者您可以使用TagBuilder
var builder = new TagBuilder("a");
builder.SetInnerText("Your Text");
builder.MergeAttribute("href", "http://test.com");
builder.MergeAttribute("class", "setPage");
然后将这个bulder.ToString()添加到stringbuilder
答案 3 :(得分:0)
控制的最佳做法,你不应该有任何直接发布为HTML的东西。相反,更喜欢使用html helper作为视图,并在需要时重用它们。
答案 4 :(得分:0)
如果你的控制器有一个你想要显示的html数据的模型,然后让它返回一个根据模型创建你的html的局部视图,这可能是首选。这样就可以在设计框架时将html演示文稿保存在视图中。
也可能更喜欢在CSS文件中使用样式并将类应用于这些元素 - 稍微更新一些。
答案 5 :(得分:0)
查看您的代码,我会采用以下方法来避免混合您的视图和代码。
我会创建一个包含html代码的部分视图,并从视图中加载
@Html.Partial("~/Views/Shared/_html.cshtml");
如果您的html需要动态更改,我会将模型传递给它:
@Html.Partial("~/Views/Shared/_html.cshtml", model);
并替换动态元素。