我正在使用静态方法创建一个静态类,以帮助控制器完成他们的工作.构建应用程序时,我收到以下错误:
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原则.让他完成他的工作(初始化,序列化,……)和控制器 – 控制器的工作 – 将结果返回给客户.
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以创建客户端响应对象