假设我有这个XML文件:
<weather>
<temp>24.0</temp>
<current-condition iconUrl="http://....">Sunny</current-condition>
</weather>
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用Attributes创建一个C#类来表示它,以便调用XmlSerializer并具有强类型标记访问权限.我认为结构看起来像这样:
[XmlRoot("weather")]
public class WeatherData
{
[XmlElement("temp")]
public string Temp { get; set; }
[XmlElement("current-condition")]
public CurrentCondition currentCond = new CurrentCondition();
}
public class CurrentCondition
{
[XmlAttribute("iconUrl")
public string IconUrl { get; set; }
// Representation of Inner Text?
}
Run Code Online (Sandbox Code Playgroud)
代表'temp'标签是直截了当的.但是,给定像current-condition这样既有内部文本又有属性的标记,我该如何表示内部文本?
我可能过于复杂了,所以请随意提出替代方案.
在最近开始一份新工作之前,他主要是一名.NET员工; 我只在C#/ .Net中完成了Web服务的开发和使用.然而,我正在开始学习在J2EE平台上进行此操作的细节,我很好奇这种特定类型的开发中的主要差异是什么.
注意:我熟悉控制台/简单接口级别的Java语言,但没有太多使用它的"如何组建功能性Web服务架构"的经验.
更新:到目前为止很棒的答案,我只是想补充一点,然而在简单的Web服务类结构中,它们似乎没有显示太多差异; 但是从把所有这些与数据库逻辑放在一起并实际托管它的角度来看 - 让服务运行和工作/如何与之交互.
背景:我正在使用C#Code-Behind创建一个非常简单的类似聊天室的ASP.NET页面.当前用户/聊天消息显示在AJAX更新面板中的控件中,并使用计时器 - 他们每隔几秒从数据库中提取信息.
我试图找到一种简单的方法来处理用户的状态为"离线",当他们退出浏览器而不是点击"注销"按钮."离线"状态目前只是IsOnline的1个字符(y/n).
到目前为止,我已经查看了window.onbeforeunload与Javascript,设置一个隐藏的表单变量与此事件的函数 - >当然麻烦的是,我仍然要在我的Code-Behind某处做测试这个隐藏的表单变量最终的服务器端数据库查询,有效地将用户设置为脱机.
我可能完全不喜欢这个简单的问题!当然,我会欣赏任何完全不同的替代建议.
谢谢
我将列出代码来解释整个情况然后提出问题的描述:
在我的View Model中,我有一个布尔属性来跟踪用户是否接受了术语:
[MustBeTrue(ErrorMessageResourceType = typeof(ErrorMessages), ErrorMessageResourceName = "MustAccept")]
public bool HasAuthorizedBanking { get; set; }
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我已经创建了一个自定义验证属性来处理这个名为MustBeTrue的处理Checkbox,因为[Required] 当前不适用于MVC 3中Checkbox的客户端验证
public class MustBeTrueAttribute : ValidationAttribute, IClientValidatable
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if ((bool)value)
return ValidationResult.Success;
return new ValidationResult(String.Format(ErrorMessageString,validationContext.DisplayName));
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var rule = new ModelClientValidationRule
{
ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()),
ValidationType = "truerequired"
};
yield return rule;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在我的View中添加一个带有ValidationMessage的CheckBoxFor:
@Html.CheckBoxFor(model => model.HasAuthorizedBanking)
@Html.ValidationMessageFor(model => model.HasAuthorizedBanking, "", new { @class = "validationtext" …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用C#运行一个新创建的ASP.NET网站,但是当我这样做时它会启动FireFox并尝试连接到http:// localhost:1295/WebSite1/Default.aspx(例如),但是10-15秒,它显示"连接中断 - 页面加载时重置了与服务器的连接." 错误.
我在过去构建的旧版ASP.NET C#页面/ Web服务中也存在此问题,实际上没有任何内容在ASP.NET开发服务器上运行.
我正在使用:Windows XP Pro SP2,Visual Studio 2008
作为参考,我也安装了SQL Server 2005 Developer Edition.
我试过了:
这个问题看起来似乎微不足道,我想的更多,但我还没有能够解决它!感谢有关此事的任何帮助.
我引用自己的一个问题,我要求进一步解释:
"我正在尝试使用C#运行一个新创建的ASP.NET网站,但是当我这样做时它会启动FireFox并尝试连接到http:// localhost:1295/WebSite1/Default.aspx(例如),但之后大约10-15秒它显示"连接中断 - 页面加载时重置了与服务器的连接."错误.这个问题也出现在我过去构建的旧版ASP.NET C#页面/ Web服务中,实际上没有任何东西在ASP.NET开发服务器上运行."
这是发生的问题,也就是在我注意到每次运行网站之前,ASP.NET服务器启动的通知显示了一个端口(例如1130),以及网站加载失败时; 事实证明它试图在另一个端口上加载该站点(在这种情况下,1128).有人认为,反病毒程序可能导致这种重定向; 低,看到卸载Nod32修复了这个问题!
所以我的问题是:有没有人找到一种方法来创建一个例外或从Nod32删除此功能?
我已经构建了一个非常简单的类似聊天室的ASP.NET应用程序,它显示当前的在线/离线用户:
我有一个表,其中DateTime列用作TimeStamp.每次用户导致回发或类似的Get事件时,我都会更新TimeStamp.我想在服务器上创建一个某种类型的周期性过程,我可以用它来检查用户已经处于非活动状态的时间,因为我知道他们上次活动的时间.一旦他们被认为是非活动的(几分钟后说),我想设置另一列的值,将其标记为"离线".
任何建议,将不胜感激.
我在Java中循环一个ResultSet; 出于测试目的,每行返回约30行,每列有17列(所有字符串数据).我正在使用StringBuilder从结果中手动构建XML String,并且它实际上花了大约36秒来完成循环以完成这些迭代.
注意:我意识到这不是从数据库中获取XML的最佳方式,甚至是从ResultSet中获取XML的最佳方法 - 但这让我对无论如何都会表现缓慢感到好奇.
更新:根据目前为止的响应,我必须解决以下问题:运行查询的时间不到一秒,我在代码的每个部分之前和之后都执行了System.currentTimeMillis()以缩小范围.36秒完全在下面的代码中.
ResultSetMetaData rsmeta = rset.getMetaData();
StringBuilder resultBuilder = new StringBuilder();
resultBuilder.append("<?xml version=\"1.0\" ?><ROWSET>");
if(numColumns != 0){
while (rset.next()) {
resultBuilder.append("<ROW>");
for (int i = 0; i <= numColumns -1;i++) {
columnName = rsmeta.getColumnName(i+1);
resultBuilder.append("<");
resultBuilder.append(columnName);
resultBuilder.append(">");
resultBuilder.append(rset.getString(i+1));
resultBuilder.append("</");
resultBuilder.append(columnName);
resultBuilder.append(">");
}
resultBuilder.append("</ROW>");
numRows += 1;
}
}
else {
stmt.close();
wsConn.close();
return "No Results";
}
Run Code Online (Sandbox Code Playgroud)
更新:根据我收到的建议 - 此代码大约花费相同的时间或花费半秒钟.
StringBuilder resultBuilder = new StringBuilder();
resultBuilder.append("<?xml version=\"1.0\" ?><ROWSET>");
if(numColumns != 0){
while (rset.next()) { …Run Code Online (Sandbox Code Playgroud) c# ×7
asp.net ×4
java ×2
localhost ×2
xml ×2
.net ×1
java-ee ×1
jdbc ×1
nod32 ×1
performance ×1
sql ×1
validation ×1
web-services ×1