asp.net-mvc – 在ASP .NET MVC 3中使用XSLT
发布时间:2020-05-24 12:46:41 所属栏目:asp.Net 来源:互联网
导读:有没有人在asp.net MVC 3中使用XSLT的经验? 这里的目的是能够开发页面,其样式和布局可以在运行时根据某些条件进行更改.例如,用户个人资料. 一个解决方案是我们可以使用单独的布局页面,并通过设置动态属性Viewbag在运行时设置它.但是,如果我们想要向页面添加
|
有没有人在asp.net MVC 3中使用XSLT的经验? 这里的目的是能够开发页面,其样式和布局可以在运行时根据某些条件进行更改.例如,用户个人资料. 一个解决方案是我们可以使用单独的布局页面,并通过设置动态属性Viewbag在运行时设置它.但是,如果我们想要向页面添加新布局,则此方法需要重新编译.我想可能是我们可以在运行时在控制器中动态加载XSL并在运行时将其绑定到模型对象.然后可以在页面中的预定义部分中呈现HTML内容. 代码片段将是一个很好的帮助. 解决方法我刚建立了一个将 XML转换为HTML的站点,以便在MVC3中显示.我使用了第二种技术,控制器确定要使用的XML和XSLT文件,并在模型中传递它们.视图中的HTML帮助程序实际执行转换.在这种情况下,我正在渲染一个会议程序,这就是程序在下面提到的内容.参数可以提供给样式表;下面,我提供了一个基本URL作为参数,将在生成的HTML中转换为链接. 该模型: public class ProgramModel
{
public string ProgramFilename { get; set; }
public string StylesheetFilename { get; set; }
public Dictionary<string,string> Parameters { get; protected set; }
public ProgramModel()
{
Parameters = new Dictionary<string,string>();
}
}
控制器: [OutputCache(Duration=1000)]
public ActionResult Index()
{
string xmlFile = Server.MapPath("~/Program.xml");
string xsltFile = Server.MapPath("~/Program-index.xslt");
Response.AddCacheDependency(new CacheDependency(xmlFile),new CacheDependency(xsltFile));
ProgramModel model = new ProgramModel();
model.ProgramFilename = xmlFile;
model.StylesheetFilename = xsltFile;
model.Parameters["baseDayUrl"] = Url.Action("Day");
return View(model);
}
帮助者: public static class HtmlHelperXmlExtensions
{
/// <summary>
/// Applies an XSL transformation to an XML document.
/// </summary>
public static HtmlString RenderXml(this HtmlHelper helper,string xmlPath,string xsltPath,IDictionary<string,string> parameters)
{
XsltArgumentList args = new XsltArgumentList();
if (parameters != null)
foreach (string key in parameters.Keys)
args.AddParam(key,"",parameters[key]);
XslCompiledTransform t = new XslCompiledTransform();
t.Load(xsltPath);
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
settings.ValidationType = ValidationType.DTD;
using (XmlReader reader = XmlReader.Create(xmlPath,settings))
{
StringWriter writer = new StringWriter();
t.Transform(reader,args,writer);
return new HtmlString(writer.ToString());
}
}
}
风景: <div data-role="content"> @Html.RenderXml(Model.ProgramFilename,Model.StylesheetFilename,Model.Parameters) </div> (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – LINQ:列表中唯一项目的计数
- asp.net-mvc – ASP.NET MVC – IsPostBack还在吗?
- asp.net-mvc – IoC Castle Windsor – 没有为此对象定义的
- asp.net – 为什么Web架构松散耦合?
- asp.net-web-api – 如何从ASP.net 5 web api返回文件
- 三重报价?如何在ASP.NET中分隔数据绑定的JavaScript字符串
- asp.net-mvc – 在ASP.NET MVC中禁用布局?
- asp.net-mvc-3 – MVC3 / Razor:cshtml.Execute()’:找不
- asp.net-mvc-3 – mvc dropdownlistfor没有标记为必需但仍然
- asp.net-mvc – 使用ModelState.Remove处理ModelState是否正
推荐文章
站长推荐
- 在asp.net中输入密钥发出错误按钮
- ASP.NET MVC4 WebAPI和Posting XML数据
- asp.net-mvc – 可以在ASP.NET MVC中本地化URL /
- asp.net – 将初始空行插入到选择列表MVC LINQ S
- 如何将global.asax文件添加到ASP.NET MVC4项目?
- 为什么用户信息存储在ASP.NET的默认成员资格提供
- asp.net – 我找不到在visual studio 2010中从工
- .net – MVC 4 Mocking HttpContext – 如何模拟
- asp.net-mvc – 从控制器重定向初始化不工作
- asp.net-mvc – 使用catchall通配符重定向到控制
热点阅读
