在MVC控制器外部使用Controller.Content c#

前端之家收集整理的这篇文章主要介绍了在MVC控制器外部使用Controller.Content c#前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用静态方法创建一个静态类,以帮助控制器完成他们的工作.构建应用程序时,我收到以下错误

Error 40 ‘System.Web.Mvc.Controller.Content(string)‘ is inaccessible due to its protection level”

知道如何解决这个问题吗?

笔记:
这是一个c#mvc应用程序

public static ActionResult GetAlbumJSON(AlbumVO album)
{
    return Controller.Content(
        JsonConvert.SerializeObject(new
        {
            max_car = @ABookClient.maxCharsProjecName,trans_img = @ABookClient.Transparent_Image,show_description = @ABookClient.Show_Product_Description,product_type = "Album",obj = CreateObjAlbumVO(album),})
    );
}

解决方法

内容方法在内部受到保护,因此您无法在控制器之外使用它.
Controller.Content Method.很可能你的静态类违反了SRP原则.让他完成他的工作(初始化,序列化,……)和控制器 – 控制器的工作 – 将结果返回给客户.
protected internal ContentResult Content(string content)

看起来像是:

public static class MyHelper
{
    public static object GetAlbum(AlbumVO album)
    {
        return new
            {
                max_car = @ABookClient.maxCharsProjecName,};
    }
}

public class AlbumController : Controller
{
    public ActionResult GetAlbums(int id)
    {
        var album = Context.GetAlbum(id);
        var convertedResult = MyHelper.GetAlbum(album);
        return Json(convertedResult);
    }
}

另外,我建议您查看AutoMapper以创建客户端响应对象

猜你在找的C#相关文章