如何在ASP.NET nshtml和Razor中呈现具有模型值html文本

8zzbczxx  于 2023-01-14  发布在  .NET
关注(0)|答案(3)|浏览(115)

我有一个包含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>

它呈现的是“hello @model.firstName @model.lastName”但我想要的是“hello Jack James”我不知道该怎么办?

cunj1qz1

cunj1qz11#

你可以这样做:

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>
9bfwbjaz

9bfwbjaz2#

我建议在将字符串传递给视图之前对其进行操作。

    • 控制器:**
{
    //inside of the get function
    var person = //call to get the data
    var text = $"<h1> hello {person.firstName} {person.lastName} </h1>"
    //add `text` to the viewbag

}
    • 查看:**
<div>
    @Html.Raw(Viewbag.text)
</div>
erhoui1w

erhoui1w3#

您只需使用@Model来替换@model

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

**更新:**由于您在后端使用ViewBag,因此下面是一个演示:

型号:

public class TestModel {
        public string firstName { get; set; }
        public string lastName { get; set; }

    }

C#代码:

TesstModel model=new TestModel{firstName="f",lastName="l"};
var text = "<h1> hello "+model.firstName+" "+model.lastName+" </h1>";

相关问题