ASP.Net Core 3.1 和全局视图方法

ASP.Net Core 3.1 and global view method

代码 @await Html.PartialAsync("~/Views/Shared/_Toast.cshtml", new ToastMessage() { Caption = "Hello", Message = "World" }) 呈现带参数的部分视图。它显示了一个 Bootstrap toast 消息,我打算在任何地方使用它。

现在是否可以将该行缩减为 @MyHelpers.ShowToastMessage(new ToastMessage() { Caption = "Hello", Message = "World" }) 之类的内容?我不想使用视图组件(矫枉过正)。另外 @functions 块似乎只是本地的。

您可以在您的应用中自定义 html助手。

namespace App.Helpers
{
    public static class HtmlHelperExtensions
    {
        public static IHtmlContent ShowToastMessage(this IHtmlHelper htmlHelper, ToastMessage model)
        {
            string str = "<div> "+ model.Caption + " " + model.Message + " <div/>";            
            return new HtmlString(str);
        }
    }
}

在您看来:

@using App.Helpers


@await Html.PartialAsync("~/Views/Shared/_Toast.cshtml", new ToastMessage() { Caption = "Hello", Message = "World" })

@Html.ShowToastMessage(new ToastMessage() { Caption = "Hello", Message = "World" })

如果您的 _Toast.cshtml 包含其他 html 个元素,那么您可以使用 TagBuilder Class 来创建。