我正在使用一个XsltCompiledTransformXML将一些XML转换为HTML片段(不是一个完整的HTML文档,只是我将在其他地方生成的页面中包含的DIV).
我正在进行如下转换:
StringBuilder output = new StringBuilder();
XmlReader rawData = BusinessObject.GetXml();
XmlWriter transformedData = XmlWriter.Create(output);
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("stylesheet.xslt");
transform.Transform(rawData, transformedData);
Response.Write(output.ToString());
Run Code Online (Sandbox Code Playgroud)
我的问题是转换的结果总是从这个XML指令开始:
<?xml version="1.0" encoding="utf-16"?>
Run Code Online (Sandbox Code Playgroud)
如何防止这种情况出现在我的转化数据中?
编辑:
我告诉XSLT我不希望它输出一个xml声明
<xsl:output method="html" version="4.0" omit-xml-declaration="yes"/>
Run Code Online (Sandbox Code Playgroud)
但这似乎对我的输出中出现的指令没有影响.
有趣的是,我的XML数据源和我的XSLT转换都指定自己UTF-8不是UTF-16.
更新:
UTF-16似乎正在出现,因为我使用字符串(构建器)作为输出机制.当我将代码更改为使用MemoryStream而不是a时StringBuilder,我的UTF-8编码将被保留.我猜这与该string类型的内部工作方式以及它如何处理编码有关.
我有一个MVC用户控件,具有以下基本结构:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Decimal>" %>
<%= Math.Round(Model) %>
Run Code Online (Sandbox Code Playgroud)
我使用它时会出现此错误消息:
编译器错误消息:CS0452:类型'decimal'必须是引用类型才能在泛型类型或方法'System.Web.Mvc.ViewUserControl'中将其用作参数'TModel'
有没有办法让这个工作(以某种方式欺骗框架将Decimal作为参考类型处理?)或者我正在尝试做的只是根本错误?
我有两个存储过程,我想在事务中执行包装.由于各种原因,我需要在我的应用程序代码中而不是在数据库中处理事务.
目前,我的代码如下所示:
try
{
using (SqlConnection conn = Connection())
{
conn.Open();
using (SqlTransaction sqlTrans = conn.BeginTransaction())
{
try
{
using (SqlCommand cmd1 = new SqlCommand("Stored_Proc_1", conn, sqlTrans))
{
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.ExecuteNonQuery();
}
using (SqlCommand cmd2 = new SqlCommand("Stored_Proc_2", conn, sqlTrans))
{
cmd2.CommandType = CommandType.StoredProcedure;
cmd2.ExecuteNonQuery();
}
sqlTrans.Commit();
}
catch
{
sqlTrans.Rollback();
throw;
}
}
conn.Close();
}
}
catch (SqlException ex)
{
// exception handling and logging code here...
}
Run Code Online (Sandbox Code Playgroud)
当其中一个存储过程引发错误时,我看到的异常消息如下所示:
Error message from raiserror within stored procedure.
Transaction count …Run Code Online (Sandbox Code Playgroud) 我正在尝试更新我(以前工作)的pdf创建Web应用程序以使用ABCpdf.NET和ABCpdf.NET Gecko Runtime nuget包.
我已经安装了两个软件包(都是版本8.1.1.6)但是当我运行我的应用程序时,我得到以下WebSupergoo.ABCpdf8.Internal.PDFException:
无法添加HTML:Gecko引擎遇到了无法恢复的错误.可能的原因:XULRunner文件夹已损坏或来自另一版本的ABCpdf.
在安装了ABCpdf.NET Gecko Runtime软件包之后,我得到了一个对话框,告诉我需要手动将XULRunner文件夹复制到我的输出目录中.为了实现这一点,我在我的应用程序.csproj文件中添加了以下内容:
<Target Name="AfterBuild">
<CallTarget Targets="CopyAbcpdfToDeployFolder" />
</Target>
<Target Name="CopyAbcpdfToDeployFolder">
<ItemGroup>
<SourceDir Include="$(ProjectDir)XULRunner\**\*.*" />
</ItemGroup>
<Copy SourceFiles="@(SourceDir)" DestinationFolder="$(WebProjectOutputDir)\$(OutputPath)%(SourceDir.RecursiveDir)\XULRunner" />
</Target>
Run Code Online (Sandbox Code Playgroud)
(这似乎工作正常 - 构建后,XULRunner文件夹及其内容存在于我的bin文件夹中)
失败的代码行如下:
theDoc.AddImageUrl(url);
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我搞定这个吗?
我在项目中有一个用户控件(.ascx),我在页面的Page_Load事件处理程序中以编程方式添加到页面中,如下所示:
Controls.Add(new MyProject.Controls.ControlWidget());
Databind();
Run Code Online (Sandbox Code Playgroud)
当我尝试从控件本身访问控件的子控件时,它们不存在.
public override void DataBind()
{
myrepeater.DataSource = GetDataSource();
// throws an exception because myrepeater is null
base.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
如何访问用户控件的子控件?我已经尝试将一个对EnsureChildControls()的调用添加到我的DataBind()覆盖中,但这似乎没有什么区别.
我在这里查看了101 Linq示例,但我在该列表中看不到这样的内容.如果我在那里没有看到相关的例子,请链接到它.
如果我有这三个类:
class Student { int id; string name }
class Course { int id, string name }
class Enrolment { int studentId; int courseId; }
Run Code Online (Sandbox Code Playgroud)
我如何使用LINQ获取学生注册的课程列表?(假设我有一个所有三个类的IList)
我正在开发一个应用程序,显示Sharepoint文档库中的文件和文件夹列表.文件/文件夹列表是基于SPList RootFolder.SubFolders和.Files集合创建的.
有没有办法从结果中过滤掉"Forms"文件夹,而无需硬编码检查名为forms的文件夹?
是否可以对多个输入XML文件执行转换?
它似乎不可能使用XslCompiledTransform,但是有没有其他方法来应用XSLT?
我正在尝试在我的XSLT中使用Muenchian分组来对匹配的节点进行分组,但我只想在父节点内进行分组,而不是在整个源XML文档中进行分组.
给出XSLT和XML如下(对我的示例代码的长度表示道歉):
XSLT
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="html" indent="yes"/>
<xsl:key name="contacts-by-surname" match="contact" use="surname" />
<xsl:template match="records">
<xsl:for-each select="contact[count(. | key('contacts-by-surname', surname)[1]) = 1]">
<xsl:sort select="surname" />
<xsl:value-of select="surname" />,<br />
<xsl:for-each select="key('contacts-by-surname', surname)">
<xsl:sort select="forename" />
<xsl:value-of select="forename" /> (<xsl:value-of select="title" />)<br />
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
XML
<root>
<records>
<contact id="0001">
<title>Mr</title>
<forename>John</forename>
<surname>Smith</surname>
</contact>
<contact id="0002">
<title>Dr</title>
<forename>Amy</forename>
<surname>Jones</surname>
</contact>
<contact id="0003">
<title>Mrs</title>
<forename>Mary</forename>
<surname>Smith</surname>
</contact>
<contact id="0004">
<title>Ms</title>
<forename>Anne</forename>
<surname>Jones</surname>
</contact>
<contact …Run Code Online (Sandbox Code Playgroud) 我想编写一个sql脚本来进行基本的冒烟测试,以检查我的服务器上的复制设置是否正确.
我认为针对应该复制的表的一组简单的CRUD操作将实现我所追求的目标,我想工作流将看起来像这样:
INSERT 一行到发布者数据库中的复制表我的问题是,我该如何做第2步?我想我可以通过查看msdb..sysjob*表格查看相关工作上次执行的时间,但我不确定这是解决问题的最佳方法.
我遇到了以下代码的问题.如果我删除var user_id和var company_id,JavaScript的正常工作.
为什么这不起作用?
var user_id = user_id;
var company_id = company_id;
if (pageNum == 1)
strActionPage = CurrentPath + "upload.php?act=store&user_id=" + user_id;
else
strActionPage = CurrentPath + "upload.php?act=store&company_id" + company_id;
for(i=0;i<4;i++){
if(document.getElementsByName("ImageType").item(i).checked == true){
strImageType = i + 1;
break;
}
}
Run Code Online (Sandbox Code Playgroud) c# ×8
xml ×3
xslt ×3
asp.net ×2
asp.net-mvc ×2
.net ×1
abcpdf ×1
gecko ×1
javascript ×1
linq ×1
replication ×1
sharepoint ×1
sql ×1
sql-server ×1
transactions ×1
xsl-grouping ×1
xulrunner ×1