2016-04-15 85 views
2

是的,有很多像这样的问题,但奇怪的是没有答案似乎为我工作。在视图中显示字符串?

我在我的模型中有一个描述字段,我想在某些视图中截断,所以截断我模型中某个元素的不同上下文对我来说似乎过分了。

 @{ 
      string description = item.Description; 
      if (description.Length > 10) 
      { 
       description = description.Substring(0, 10) + "..."; 
      } 
      //Using HtmlString 
      var s = new HtmlString(description); 
      s; 
      //Using Html.Raw 
      Html.Raw(description); 
      //Using Html.Display 
      Html.Display(description); 
     } 

无论我尝试它,都会导致错误或根本不显示任何内容。如果我在声明之后放置断点,我的字符串看起来就像我想要的那样,我只需要在我的<td>元素中显示它。

+0

只需添加@试试这个:@ {字符串描述= “你的字符串”;} @ Html.Display(介绍) –

+0

当然,只是张贴在此之后我发现'WriteLiteral',这似乎工作。我仍然不知道为什么'HtmlString'给出错误,而'Html.Raw'什么也不显示。 – Madmenyo

+0

@RenanAraújo只显示分号。您将“Html.Display”方法放在块之外的任何特定原因? – Madmenyo

回答

3

使用HTML里面@块将返回MvcHtmlString但你不能在你的HTML priting它。

@{ 
    string description = item.Description; 
    if (description.Length > 10) 
    { 
     description = description.Substring(0, 10) + "..."; 
    } 

    Html.Raw(description); // Doesn't print in html. You are returning to nothing 
    // var myStr = Html.Raw(description); 
} 

@Html.Raw(description) // Print in html 

或者你可以前Html.Raw(description)

@{ 
    string description = item.Description; 
    if (description.Length > 10) 
    { 
     description = description.Substring(0, 10) + "..."; 
    } 

    Html.Raw(description); // Doesn't print in html. You are returning to nothing 
    // var myStr = Html.Raw(description); 

    @Html.Raw(description) // Print in html 
} 
+0

在块之外它用广告分号。你知道为什么以及如何摆脱它吗?你的第二个选项似乎可以正常工作,在@ @ Html.Raw(description)'的'@'块内。 – Madmenyo

+0

你不需要使用';'后@ Html.Raw(描述) –

+1

我笑了一下,谢谢:D – Madmenyo

1

你在你的代码中包含了显示方法,这就是为什么你有这个问题。你应该把Html.Raw放在代码块之外。

你的代码应该是这个样子:

@{ 
    string description = "sdasdasdasdasdas dasd asdasd asd"; 
    if (description.Length > 10) 
    { 
     description = description.Substring(0, 10) + "..."; 
    } 
} 

@Html.Raw(description) 
+0

两个问题:自从'Html.Raw()'在HTML中放置一个分号后,我该如何摆脱分号。为什么这需要走出这个街区?在我看来,@ Html.Raw(变量)与@ {Html.Raw(变量)}完全一样,但它至少可以在块之外打印某些内容。 – Madmenyo

+1

1.关于分号。也许你正在输入@ Html.Raw(变量);这就是为什么tou有分号的原因。在末尾没有分号键入它。像这样@ Html.Raw(变量)2. @ {Html.Raw(变量)}不会打印任何东西,因为Html.Raw是一种返回IHtmlString的方法,所以当你在代码块中时,该方法返回正确的字符串,但是你不打印它。为了打印一个值,你应该使用这里描述的方法http://www.asp.net/web-pages/overview/getting-started/introducing-razor-syntax-c – ssimeonov