mvc4 ViewBag 的一些弊端 以及选择 dynamic 的方便型(本文有待修改.内容出现错误)

< ![CDATA[

(本文有待修改.内容出现错误)

当 controller里面

ViewBag.list = List<sss>;

viewbag.a=sss;

viewbag.c = string[] ab; 

要在view里面@model  ssss.但是

view里面只能出现一个@model..所以 只能将 list a c组合成一个类

方便性不足

 

后来果断用以前mvc2的时候的dynamic

using System.Dynamic;

 

  public ActionResult ShowReWord(string langstring wordGuid id = new Guid(), string type = "")         {

dynamic model = new ExpandoObject(); var ds = .ToList(); var rw = .FirstOrDefault(n => n.id == id); model.ds = ds; model.rw = rw; return View(model);
}

然后再view里面.直接 Model.ds 还是很爽的.

但是,这时候要用到 Mono.ceril 神器了

首先 建个控制台

static void Main(string[] args)
        {
            var asmFile = args[0];
            var pdfFile = Path.ChangeExtension(asmFile, ".pdb");
            Console.WriteLine("Making anonymous types public for '{0}'.", asmFile);

            var asmDef = AssemblyDefinition.ReadAssembly(asmFile, new ReaderParameters
            {
                ReadSymbols = true
            });

            foreach (var type in asmDef.Modules.SelectMany(m => m.Types).Where(t => t.Name.Contains("<>f__AnonymousType")))
            {
                type.IsPublic = true;
            }

            asmDef.Write(asmFile, new WriterParameters
            {
                WriteSymbols = true
            });
        }

然后  在网站 后期生成事件中  "$(SolutionDir)ToolsPublicAnonymousbinDebugPublicAnonymous.exe" "$(TargetPath)"

然后就行了..他会在web.dll生成的时候,修改其命名空间的访问状态为public

 

这样view就能访问了..

 

可以搜索下 site:blog.zhaojie.me  PublicAnonymous  关键字 了解内情


(本文有待修改.内容出现错误)

 

 

 

 

 

 

 

]]>

你可能感兴趣的:(dynamic)