【问题标题】:how to render html text in ASP.NET nshtml and Razor if it has model values如果它具有模型值,如何在 ASP.NET nshtml 和 Razor 中呈现 html 文本
【发布时间】:2023-01-10 21:52:23
【问题描述】:

我有一个带有 html 文本和模型值的变量

var text = "<h1> hello @Model.firstName @Model.lastName </h1>"

在 cshtml 中我有

@Html.Raw(text) 

我的代码看起来像

    @model TextModel
@{
     var text = Viewbag.text
 }
 ...
 <div>
      @Html.Raw(text)
 </div>

它呈现的是“你好@model.firstName @model.lastName” 但我想要的是“你好杰克詹姆斯” 我不知道我能做什么?

【问题讨论】:

  • 您真的应该向我们展示一个真实的代码示例而不是示例,因为对于您的示例,它会像 vhr 的答案一样简单。如果没有我们可以查看的明确代码,我们无法确定出了什么问题。
  • 是的,对不起,我添加了我的代码示例

标签: c# asp.net asp.net-mvc razor


【解决方案1】:

你可以这样做:

var text = $"<h1> hello {Model.firstName} {Model.lastName} </h1>";

然后: @Html.Raw(text)

已编辑:不确定您的 CSHTML 是什么样子,但它应该可以工作(假设它看起来像这样):

@model YourModel
@{
     var text = $"<h1> hello {Model.firstName} {Model.lastName} </h1>";
 }
 ...
 <div>
      @Html.Raw(text)
 </div>

【讨论】:

  • 不幸的是没有工作,因为在这里我使用文本变量只是为了简化问题 html 文本来自在线资源我试图像你建议的那样更改那里的文本,但它会呈现为 $"hello {Model.firstName} {Model.姓}”
【解决方案2】:

你只需要用@Model来代替@model

var text = "<h1> hello @Model.firstName @Model.lastName </h1>"

【讨论】:

  • 这是一个打字错误,抱歉我实际上正在使用模型但仍然无法正常工作
  • 这不会返回同样的问题吗?因为永远不会访问 @Model.firstName@Model.lastName 值? @vhr 的回答是正确的
  • 不幸的是,@vhr 的回答也没有用,因为在这里我使用文本变量只是为了简化问题,html 文本来自在线资源,我试图按照他的建议更改那里的文本,但它会呈现为 $"hello {Model. firstName} {Model.lastName}”
  • 你能展示一下这个文本是如何从在线资源中接收到的吗?如果我们看不到您实际接收/使用的内容,我们将无能为力
猜你喜欢
  • 2013-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-19
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多