我在Razor Helper文件中有以下代码
@helper MakeNoteBlank(string content)
{
string msg = "";
if(content == null)
{
msg = " ";
}
else
{
msg = content;
}
<div class="note">
<p>
@Html.Raw(msg)
</p>
</div>
}
使用@ Html.Raw(..)语句执行时代码失败,说明了这一点 &#34;对象引用未设置为对象的实例。&#34;
如果我删除@ Html.Raw(..)并输出&#39; msg&#39;直接然后没有问题。
我做错了什么?
答案 0 :(得分:3)
使用@(new HtmlString())代替@ Html.Raw()
答案 1 :(得分:0)
我能想到的最好的方法可能是为HtmlHelper
创建一个扩展方法。您需要创建一个像这样的类:
using System.Web;
using System.Web.Mvc;
namespace MyApplication.Extensions
{
public static class HtmlHelperExtension
{
public static IHtmlString DisplayMessage<T>(this HtmlHelper<T> htmlHelper, string content)
{
return htmlHelper.Raw($@"
<div class=""note"">
<p>
{content ?? " "}
</p>
</div>
");
}
}
}
然后在您的cshtml文件中,只需像这样使用它即可:
@using MyApplication.Extensions;
@Html.DisplayMessage("Your content here")
希望这会有所帮助。