加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:47:31 所属栏目:百科 来源:网络整理
导读:我正在使用静态方法创建一个静态类,以帮助控制器完成他们的工作.构建应用程序时,我收到以下错误: Error 40 ‘ System.Web.Mvc.Controller.Content(string) ‘ is inaccessible due to its protection level” 知道如何解决这个问题吗? 笔记: 这是一个c#mv
我正在使用静态方法创建一个静态类,以帮助控制器完成他们的工作.构建应用程序时,我收到以下错误:

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以创建客户端响应对象

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读