2013-03-06 75 views
2

是否有可能使用viewmodel中的屬性來指定剃刀不使用html編碼來呈現字符串?我想問的是,如果可以在模型中添加一個屬性並修改數據表示形式(就像你可以添加[Disable],[Layout(...)],[必需的]等) - 以這樣的方式,它會使字符串呈現HTML。ASP.NET MVC Razor不使用屬性即編碼進行渲染。數據註釋

回答

1

不是我所知道的,但它似乎可以將數據類型從字符串更改爲HTMLString。如果您使用HTMlString,它應該呈現字符串中的HTML。

Always output raw HTML using MVC3 and Razor參見

在該線程中的第二響應示出了使用的屬性來顯示原始HTML的一種可能的方式。

1

嘗試Html.Raw(yourstring)

這應該幫助。

0

MVC默認輸出一個字符串作爲純字符串,而不是HTML。

例如在Action

public ActionResult Test() 
{ 
    var model = new TestViewModel(); // your view model 
    model.Message = "<b>hello</b>"; 
    return View(model); 
} 

View

@model MyProject.TestViewModel 

<div> 
    @Model.Message 
</div> 

這將作爲渲染:

<b>hello</b> 

如果要真正地呈現爲HTML,您需要更改以上這個:

@MvcHtmlString.Create(Model.Message) 

或者,您可以創建一個擴展,使之更好:

public static MvcHtmlString ToMvcHtmlString(this String str) 
    { 
     if (string.IsNullOrEmpty(str)) 
      return MvcHtmlString.Empty; 
     else 
      return MvcHtmlString.Create(str); 
    } 

因此然後呈現字符串,如HTML,在你View,你可以寫:

@Model.Message.ToMvcHtmlString() 

如果這不是什麼你在追求,你應該爲我們提供一個例子,說明你的代碼在哪裏崩潰。

相關問題