ASP.NET mvc 自定义XSLT视图引擎 遇到的问题【高手请进有疑难杂症】

简介: 直接采用XmlReader.Create(fs);会报错误 缺少根节点 这是什么原因,应该怎么做请高手路过时看看 用其他的方式实现视图引擎,可能很难实现强类型的model,而采用XSLT作为视图引擎则可以实现 可以将实体对象序列化为XML,xml在解析为html这样就实现了强类型的MODEL 今天在试验时发现个问题,始终未能直接解决, XmlReader.

直接采用XmlReader.Create(fs);会报错误 缺少根节点 这是什么原因,应该怎么做请高手路过时看看

用其他的方式实现视图引擎,可能很难实现强类型的model,而采用XSLT作为视图引擎则可以实现

可以将实体对象序列化为XML,xml在解析为html这样就实现了强类型的MODEL

今天在试验时发现个问题,始终未能直接解决,

XmlReader.Create(fs);会报缺少根节点呢 fs为一个MemoryStream

代码如下

1强类型的MODEL

 [Serializable]
    public class ChangePasswordModel
    {
      
        public string OldPassword { get; set; }

     
        public string NewPassword { get; set; }

        
        public string ConfirmPassword { get; set; }
    }
2xsltView:IView

进行解析

  void IView.Render(ViewContext viewContext, System.IO.TextWriter writer)
        {
          

            XslCompiledTransform transform = new XslCompiledTransform();
            //xslt文件的路径
          
            string XsltFileDir =System.Web.HttpContext.Current.Server.MapPath(_xsltPhysicalPath);
            try
            {
                //XsltSettings myxsltseting = new XsltSettings();
                //myxsltseting.EnableDocumentFunction = true;
                transform.Load(XsltFileDir);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            MemoryStream stream = new MemoryStream();

            MemoryStream fs = new MemoryStream();
            XmlReaderSettings redset = new XmlReaderSettings();
            redset.ProhibitDtd = true;
            XsltArgumentList myarg = new XsltArgumentList();
            myarg.AddExtensionObject("myfn:utils", new MyXslExtension());

            System.Xml.Serialization.XmlSerializer xmlser = new System.Xml.Serialization.XmlSerializer(viewContext.ViewData.Model.GetType());

           

            xmlser.Serialize(fs, viewContext.ViewData.Model);
            fs.Position = 0;
            StreamReader reader2 = new StreamReader(fs, System.Text.Encoding.UTF8);

            if (string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.Params["debug"]))
            {
                try
                {

                    //原来采用ViewData存数据的时候
                    // transform.Transform(XmlReader.Create(new StringReader(viewContext.ViewData["xmlcontent"].ToString()), redset),myarg, stream);
                    ///
                    ///XmlReader.Create(fs);会报缺少根节点呢
                    
                    transform.Transform(XmlReader.Create(new StringReader(reader2.ReadToEnd()),redset), myarg, stream);

                }
                catch (Exception ex)
                {
                    throw ex;
                }
                // transform.Transform(Server.MapPath("a.xml"), null, stream);
                stream.Position = 0;
                StreamReader reader = new StreamReader(stream, System.Text.Encoding.UTF8);
                // 呈现出解析后的内容
                writer.Write(reader.ReadToEnd());
            }
            else
            {
               writer.Write(reader2.ReadToEnd());
              

            }
        }

 

如果直接采用XmlReader.Create(fs);会报错误 缺少根节点 这是什么原因,应该怎么做请高手路过时看看

test
相关文章
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
42 0
|
13天前
|
前端开发 Java Spring
数据之桥:深入Spring MVC中传递数据给视图的实用指南
数据之桥:深入Spring MVC中传递数据给视图的实用指南
29 3
|
1月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
29 0
|
1月前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0
|
1月前
|
存储 设计模式 前端开发
请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
【2月更文挑战第26天】【2月更文挑战第89篇】请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
100 5
|
3月前
|
XML 前端开发 定位技术
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
25 0
|
3月前
|
前端开发
.net core mvc获取IP地址和IP所在地(其实是百度的)
.net core mvc获取IP地址和IP所在地(其实是百度的)
124 0
|
8月前
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
117 0
|
9月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
67 0

相关实验场景

更多