{"id":15952317,"url":"https://github.com/try0/feedbackmessages","last_synced_at":"2026-01-20T20:32:59.790Z","repository":{"id":40883034,"uuid":"253480457","full_name":"try0/FeedbackMessages","owner":"try0","description":"Feedback messages utility for .NET Web application.  ","archived":false,"fork":false,"pushed_at":"2023-05-31T20:39:03.000Z","size":1137,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-28T08:17:28.816Z","etag":null,"topics":["asp","asp-net-core","asp-net-core-mvc","asp-net-mvc","blazor","dotnet","feedback-message","feedback-messages","message","mvc","net-framework","net5","netframework","netstandard","razor-pages","razorpages","web","web-application","web-forms"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/try0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-06T11:44:00.000Z","updated_at":"2023-05-01T02:12:22.000Z","dependencies_parsed_at":"2024-10-07T13:08:19.155Z","dependency_job_id":"1fb6460e-996d-401f-8e7d-5e3e06e23330","html_url":"https://github.com/try0/FeedbackMessages","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/try0%2FFeedbackMessages","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/try0%2FFeedbackMessages/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/try0%2FFeedbackMessages/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/try0%2FFeedbackMessages/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/try0","download_url":"https://codeload.github.com/try0/FeedbackMessages/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247589150,"owners_count":20963018,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asp","asp-net-core","asp-net-core-mvc","asp-net-mvc","blazor","dotnet","feedback-message","feedback-messages","message","mvc","net-framework","net5","netframework","netstandard","razor-pages","razorpages","web","web-application","web-forms"],"created_at":"2024-10-07T13:08:10.111Z","updated_at":"2026-01-20T20:32:59.784Z","avatar_url":"https://github.com/try0.png","language":"C#","readme":"# FeedbackMessages\n\n[![Build status](https://ci.appveyor.com/api/projects/status/p8ia0pbkjtqx9i50?svg=true)](https://ci.appveyor.com/project/try0/feedbackmessages) \n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=FeedbackMessages\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=FeedbackMessages) \n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=FeedbackMessages\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=FeedbackMessages)\n\nFeedback messages utility for .NET Web application.  \nDisplay your feedbacks for web clients easily.  \nMessages that could not be rendered are persisted in the session until rendered.\n\n## Version\n\n0.6.0 (pre-release)\n\nversion \u003e=.NETFramework 4.6.1, .NET Standard 2.0\n\n## Demo\n\n[FeedbackMessages.Example.WebForms](http://feedbackmessages-webforms.azurewebsites.net)\n\n\n## Usage\n\n### NuGet\n[FeedbackMessages](https://www.nuget.org/packages/FeedbackMessages/0.6.0) WebForms\n\n[FeedbackMessages.Mvc](https://www.nuget.org/packages/FeedbackMessages.Mvc/0.6.0) Mvc (.NETFramework)\n\n[FeedbackMessages.AspNetCore.Mvc](https://www.nuget.org/packages/FeedbackMessages.AspNetCore.Mvc/0.6.0) Mvc, RazorPages\n\n[FeedbackMessages.AspNetCore.Blazor](https://www.nuget.org/packages/FeedbackMessages.AspNetCore.Blazor/0.6.0) ServerSideBlazor\n\n\n---\n\n\n### Initialize settings (optional)\n\nIn your application's start up process.\n```C#\nFeedbackMessageSettings.CreateInitializer()\n    // custom renderer for feedback-message-panel\n    .SetMessageRendererFactory(() =\u003e {\n\n        var messageRenderer = new FeedbackMessageRenderer();\n        messageRenderer.OuterTagName = \"div\";\n        messageRenderer.InnerTagName = \"span\";\n\n        messageRenderer.AppendOuterAttributeValue(FeedbackMessageLevel.INFO, \"class\", \"ui info message\");\n        messageRenderer.AppendOuterAttributeValue(FeedbackMessageLevel.SUCCESS, \"class\", \"ui success message\");\n        messageRenderer.AppendOuterAttributeValue(FeedbackMessageLevel.WARN, \"class\", \"ui warning message\");\n        messageRenderer.AppendOuterAttributeValue(FeedbackMessageLevel.ERROR, \"class\", \"ui error message\");\n\n        return messageRenderer;\n    })\n    // custom script builder.\n    .SetScriptBuilderInstance(new FeedbackMessageScriptBuilder(msg =\u003e $\"alert('{msg.ToString()}');\"))\n    // custom store serializer.\n    .SetStoreSerializerInstance(new FeedbackMessageStoreSerializer()\n    {\n        Deserializer = serial =\u003e /* TODO */ new FeedbackMessageStore(),\n        Serializer = store =\u003e /* TODO */ \"\"\n    })\n    // init configs\n    .Initialize();\n```\n\n#### Default\n* FeedbackMessageRenderer renders ul and li tags that has \"feedback-level\" class attribute value.  \n![output](https://user-images.githubusercontent.com/17096601/79125786-b2d68580-7dd9-11ea-9bd4-4e067d844d17.PNG)\n\n* FeedbackMessageScriptBuilder throws Exception.\n\n* FeedbackMessageStoreSerializer use System.Text.Json.JsonSerializer\n\n---\n\n\n### WebForms  \n\nAdd FeedbackMessages dependency.  \nThere is nothing you need to do to initialize. When start up application, add FeedbackMessages.FeedbackMessageHttpModule automatically.\n\nAdd messages.\n```C#\n// Control that inherits System.Web.UI.Control\n\nusing FeedbackMessages.Extensions;\n\n...\n\nthis.InfoMessage(\"Information feedback message.\");\nthis.SuccessMessage(\"Success feedback message.\");\nthis.WarnMessage(\"Warning feedback message.\");\nthis.ErrorMessage(\"Error feedback message.\");\n\n```\n\nIn the case of display messages as html element.\n```xml\n\u003c!-- .aspx file --\u003e\n\n\u003c%@ Register Assembly=\"FeedbackMessages\" Namespace=\"FeedbackMessages.Components\" TagPrefix=\"fm\" %\u003e\n\n\u003c!-- render message area --\u003e\n\u003cfm:FeedbackMessagePanel runat=\"server\" ID=\"FeedbackMessagePanel\"\u003e\u003c/fm:FeedbackMessagePanel\u003e\n```\n\nIn the case of display messages using JavaScript. \n```C#\n// Control that inherits System.Web.UI.Control\n\nusing FeedbackMessages.Extensions;\n\nthis.AppendFeedbackMessageScript();\n```\n\n---\n\n\n### Mvc (.NETFramework)\n\nAdd FeedbackMessages.Mvc dependency.  \nThere is nothing you need to do to initialize. When start up application, add FeedbackMessages.FeedbackMessageHttpModule automatically.\n\nAdd messages.\n```C#\n// Controller that inherits System.Web.Mvc.Controller\n\nusing FeedbackMessages.Extensions;\n\n・・・\n\nthis.InfoMessage(\"Information feedback message.\");\nthis.SuccessMessage(\"Success feedback message.\");\nthis.WarnMessage(\"Warning feedback message.\");\nthis.ErrorMessage(\"Error feedback message.\");\n\n```\n\nIn the case of display messages as html element.\n```xml\n\u003c!-- .cshtml file --\u003e\n\n@using FeedbackMessages.Extensions;\n\n\u003c!-- render message area --\u003e\n@Html.FeedbackMessagePanel()\n\n```\n\nIn the case of display messages using JavaScript. \n```xml\n\u003c!-- .cshtml file --\u003e\n\n@using FeedbackMessages.Extensions;\n\n@Html.FeedbackMessageScript()\n```\n\nAjax lazy load\n```C#\npublic class YourController : Controller\n{\n    public ActionResult AjaxFeedbackMessage()\n    {\n        var messageHtml = FeedbackMessageSettings.Instance.MessageRenderer.RenderMessages().ToString();\n\n        return new ContentResult()\n        {\n            ContentType = \"text/html\",\n            ContentEncoding = System.Text.Encoding.UTF8,\n            Content = messageHtml\n        };\n    }\n}\n```\n```html\n\u003cscript\u003e\n\n    $(function () {\n       $.ajax({\n            type: \"POST\", // GET\n            url: \"/Your/AjaxFeedbackMessage\",\n            success: function (messageHtml) {\n                if (!messageHtml) {\n                    return;\n                }\n\n                $(\"#ajax-feedback-msg-container\").html(messageHtml);\n            },\n            error: function (jqXHR, status, error) {\n                // TODO\n            }\n        });\n    });\n\u003c/script\u003e\n\n\u003cdiv id=\"ajax-feedback-msg-container\"\u003e\u003c/div\u003e\n```\n---\n\n\n### Mvc\nAdd FeedbackMessages.AspNetCore.Mvc dependency.\n\nInitialize FeedbackMessages in Startup.cs.\n```C#\npublic void ConfigureServices(IServiceCollection services)\n{\n    services.AddMvc(options =\u003e\n    {\n        // Required add filter\n        options.Filters.Add(FeedbackMessageActionFilter.Instance);\n    });\n\n    // Required add context accessor\n    services.AddHttpContextAccessor();\n}\n\npublic void Configure(IApplicationBuilder app, IHostingEnvironment env)\n{\n    // Required use middleware\n    app.UseFeedackMessages();\n}\n```\n\nAdd messages.\n```C#\n// Controller that inherits Microsoft.AspNetCore.Mvc.Controller\n\nusing FeedbackMessages.Extensions;\n\n・・・\n\nthis.InfoMessage(\"Information feedback message.\");\nthis.SuccessMessage(\"Success feedback message.\");\nthis.WarnMessage(\"Warning feedback message.\");\nthis.ErrorMessage(\"Error feedback message.\");\n\n```\n\nIn the case of display messages as html element.\n```xml\n\u003c!-- .cshtml file --\u003e\n\n@using FeedbackMessages.Extensions;\n\n\u003c!-- render message area --\u003e\n@Html.FeedbackMessagePanel()\n\n```\n\nIn the case of display messages using JavaScript. \n```xml\n\u003c!-- .cshtml file --\u003e\n\n@using FeedbackMessages.Extensions;\n\n\u003c!-- render message area --\u003e\n@Html.FeedbackMessageScript()\n\n```\n\n\n---\n\n\n### RazorPages\nAdd FeedbackMessages.AspNetCore.Mvc dependency.\n\nInitialize FeedbackMessages in Startup.cs.\n```C#\npublic void ConfigureServices(IServiceCollection services)\n{\n    services.AddMvc(options =\u003e\n    {\n        // Required add filter\n        options.Filters.Add(FeedbackMessageActionFilter.Instance);\n    });\n\n    // Required add context accessor\n    services.AddHttpContextAccessor();\n}\n\npublic void Configure(IApplicationBuilder app, IHostingEnvironment env)\n{\n    // Required use middleware\n    app.UseFeedackMessages();\n}\n```\n\nAdd messages.\n```C#\n// PageModel that inherits Microsoft.AspNetCore.Mvc.RazorPages.PageModel\n\nusing FeedbackMessages.Extensions;\n\n・・・\n\nthis.InfoMessage(\"Information feedback message.\");\nthis.SuccessMessage(\"Success feedback message.\");\nthis.WarnMessage(\"Warning feedback message.\");\nthis.ErrorMessage(\"Error feedback message.\");\n```\n\nIn the case of display messages as html element.\n```xml\n\u003c!-- .cshtml file --\u003e\n\n@addTagHelper *, FeedbackMessages.AspNetCore.Mvc\n\u003cfeedback-message-panel\u003e\u003c/feedback-message-panel\u003e\n```\n\nIn the case of display messages using JavaScript. \n```xml\n\u003c!-- .cshtml file --\u003e\n\n@addTagHelper *, FeedbackMessages.AspNetCore.Mvc\n\u003cfeedback-message-script\u003e\u003c/feedback-message-script\u003e\n```\n\n\n---\n\n\n\n### Blazor(server-side)\nAdd FeedbackMessages.AspNetCore.Blazor dependency.\n\nInitialize FeedbackMessages in Startup.cs.\n```C#\npublic void ConfigureServices(IServiceCollection services)\n{\n    // Required add context accessor\n    services.AddHttpContextAccessor();\n}\n\npublic void Configure(IApplicationBuilder app, IHostingEnvironment env)\n{\n    // Required use middleware\n    app.UseFeedackMessages();\n}\n```\n\nAdd messages.\n```C#\n// Component that inherits Microsoft.AspNetCore.Components.ComponentBase\n\nusing FeedbackMessages.Extensions;\n\n・・・\n\nthis.InfoMessage(\"Information feedback message.\");\nthis.SuccessMessage(\"Success feedback message.\");\nthis.WarnMessage(\"Warning feedback message.\");\nthis.ErrorMessage(\"Error feedback message.\");\n```\n```xml\n\u003c!-- .razor file --\u003e\n\n@using FeedbackMessages.Extensions;\n\n@code {\n    this.InfoMessage(\"Information message.\");\n    this.SuccessMessage(\"Success message.\");\n    this.WarnMessage(\"Warning message.\");\n    this.ErrorMessage(\"Error message.\");\n}\n```\n\nIn the case of display messages as html element.\n```xml\n\u003c!-- .razor file --\u003e\n\n@namespace FeedbackMessages.Components\n\u003cFeedbackMessagePanel @ref=\"feedbackMessagePanel\"\u003e\u003c/FeedbackMessagePanel\u003e\n```\n\nIn the case of display messages using JavaScript. \n```xml\n\u003c!-- .razor file --\u003e\n\n@namespace FeedbackMessages.Components\n\u003cFeedbackMessageScript @ref=\"feedbackMessageScript\"\u003e\u003c/FeedbackMessageScript\u003e\n```\n\n\nRefresh feedback message component.  \nTo redraw, the component needs to be refreshed.\n```\nfeedbackMessagePanel.RefreshRender();\n//feedbackMessageScript.RefreshRender();\n```\n\n---\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftry0%2Ffeedbackmessages","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftry0%2Ffeedbackmessages","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftry0%2Ffeedbackmessages/lists"}