【发布时间】:2014-01-12 18:09:31
【问题描述】:
我已经搜索了一些关于这个错误的主题,但似乎没有一个能给我一个解决方案。
我试图使用 xml 源数据来创建我的类的实例,使用 code first mvc c#。
我的模型如下所示:
namespace PSA.Models
{
public class PunchRoundRule:IPunchRoundRule
{
public virtual int PunchRoundRuleId { get; set; }
public virtual string Name { get; set; }
[Display(Name="In Punch Early Inside Round")]
public virtual string InPunchEarlyInsideRound { get; set; }
[Display(Name = "Unscheduled Out Round")]
public virtual string UnscheduledOutRound { get; set; }
[Display(Name = "In Punch Early Outside Grace")]
public virtual string InPunchEarlyOutsideGrace { get; set; }
[Display(Name = "In Punch Early Outside Round")]
public virtual string InPunchEarlyOutsideRound { get; set; }
[Display(Name = "Out Punch Early Change Point")]
public virtual string OutPunchEarlyChangePoint { get; set; }
[Display(Name = "Out Punch Early Inside Grace")]
public virtual string OutPunchEarlyInsideGrace { get; set; }
[Display(Name = "Out Punch Late Outside Round")]
public virtual string OutPunchLateOutsideRound { get; set; }
[Display(Name = "Out Punch Late Inside Round")]
public virtual string OutPunchLateInsideRound { get; set; }
[Display(Name = "In Punch Late Change Point")]
public virtual string InPunchLateChangePoint { get; set; }
[Display(Name = "Transfer Round")]
public virtual string TransferRound { get; set; }
[Display(Name = "Unscheduled Out Grace")]
public virtual string UnscheduledOutGrace { get; set; }
[Display(Name = "Transfer Grace")]
public virtual string TransferGrace { get; set; }
[Display(Name = "Is Missed Out Exception")]
public virtual bool IsMissedOutException { get; set; }
[Display(Name = "Out Punch Late Inside Grace")]
public virtual string OutPunchLateInsideGrace { get; set; }
[Display(Name = "In Punch Late Outside Round")]
public virtual string InPunchLateOutsideRound { get; set; }
[Display(Name = "In Punch Late Outside Grace")]
public virtual string InPunchLateOutsideGrace { get; set; }
[Display(Name = "In Punch Early Change Point")]
public virtual string InPunchEarlyChangePoint { get; set; }
[Display(Name = "Unscheduled In Round")]
public virtual string UnscheduledInRound { get; set; }
[Display(Name = "In Punch Early Inside Grace")]
public virtual string InPunchEarlyInsideGrace { get; set; }
[Display(Name = "Out Punch Late Outside Grace")]
public virtual string OutPunchLateOutsideGrace { get; set; }
[Display(Name = "In Punch Late Inside Round")]
public virtual string InPunchLateInsideRound { get; set; }
[Display(Name = "In Punch Late Inside Grace")]
public virtual string InPunchLateInsideGrace { get; set; }
[Display(Name = "Use Scheduled Out")]
public virtual bool UseScheduledOut { get; set; }
[Display(Name = "Out Punch Early Outside Round")]
public virtual string OutPunchEarlyOutsideRound { get; set; }
[Display(Name = "Out Punch Early Outside Grace")]
public virtual string OutPunchEarlyOutsideGrace { get; set; }
[Display(Name = "Out Punch Early Inside Round")]
public virtual string OutPunchEarlyInsideRound { get; set; }
[Display(Name = "Unscheduled In Grace")]
public virtual string UnscheduledInGrace { get; set; }
[Display(Name = "Out Punch Late Change Point")]
public virtual string OutPunchLateChangePoint { get; set; }
public virtual int WorkRuleId { get; set; }
public virtual WorkRule WorkRule { get; set; }
[ScaffoldColumn(false)]
public virtual DateTime DateSubmitted { get; set; }
IEnumerable<PunchRoundRule> punchRoundRule = GetPunchRoundRule<PunchRoundRule>("http://localhost:12276/Files/WSAPunchRoundRule.xml");
static IEnumerable<T> GetPunchRoundRule<T>(String xml)
where T : IPunchRoundRule, new()
{
return XElement.Parse(xml)
.Elements("Response")
.Select(f => new T
{
PunchRoundRuleId=10,
Name = f.Element("name").Value,
});
}
public PunchRoundRule()
{
this.DateSubmitted = DateTime.Now;
}
}
public interface IPunchRoundRule
{
int PunchRoundRuleId { get; set; }
string Name { get; set; }
}
}
我的 Xml 文件如下所示:
<?xml version='1.0' encoding="utf-8"?>
<Response Status="Success" action="RetrieveAllForUpdate">
<WSAPunchRoundRule InPunchEarlyInsideRound="2:00" UnscheduledOutRound="0:01" InPunchEarlyOutsideGrace="0:00" InPunchEarlyOutsideRound="0:01" OutPunchEarlyChangePoint="0:00" OutPunchEarlyInsideGrace="0:00" OutPunchLateOutsideRound="0:01" OutPunchLateInsideRound="0:01" InPunchLateChangePoint="0:00" TransferRound="0:01" UnscheduledOutGrace="0:00" TransferGrace="0:00" IsMissedOutException="true" OutPunchLateInsideGrace="0:00" InPunchLateOutsideRound="0:01" InPunchLateOutsideGrace="0:00" InPunchEarlyChangePoint="2:00" UnscheduledInRound="0:01" InPunchEarlyInsideGrace="0:00" OutPunchLateOutsideGrace="0:00" InPunchLateInsideRound="0:01" InPunchLateInsideGrace="0:00" UseScheduledOut="false" OutPunchEarlyOutsideRound="0:01" Name="Default Early Start" OutPunchEarlyOutsideGrace="0:00" OutPunchEarlyInsideRound="0:01" UnscheduledInGrace="0:00" OutPunchLateChangePoint="0:00"/>
<WSAPunchRoundRule InPunchEarlyInsideRound="2:00" UnscheduledOutRound="0:01" InPunchEarlyOutsideGrace="0:00" InPunchEarlyOutsideRound="0:01" OutPunchEarlyChangePoint="0:00" OutPunchEarlyInsideGrace="0:00" OutPunchLateOutsideRound="0:01" OutPunchLateInsideRound="0:01" InPunchLateChangePoint="0:00" TransferRound="0:01" UnscheduledOutGrace="0:00" TransferGrace="0:00" IsMissedOutException="true" OutPunchLateInsideGrace="0:00" InPunchLateOutsideRound="0:01" InPunchLateOutsideGrace="0:00" InPunchEarlyChangePoint="2:00" UnscheduledInRound="0:01" InPunchEarlyInsideGrace="0:00" OutPunchLateOutsideGrace="0:00" InPunchLateInsideRound="0:01" InPunchLateInsideGrace="0:00" UseScheduledOut="false" OutPunchEarlyOutsideRound="0:01" Name="Ramadan" OutPunchEarlyOutsideGrace="0:00" OutPunchEarlyInsideRound="0:01" UnscheduledInGrace="0:00" OutPunchLateChangePoint="0:00"/>
<WSAPunchRoundRule InPunchEarlyInsideRound="2:00" UnscheduledOutRound="0:01" InPunchEarlyOutsideGrace="0:00" InPunchEarlyOutsideRound="0:01" OutPunchEarlyChangePoint="0:00" OutPunchEarlyInsideGrace="0:00" OutPunchLateOutsideRound="0:01" OutPunchLateInsideRound="0:01" InPunchLateChangePoint="0:00" TransferRound="0:01" UnscheduledOutGrace="0:00" TransferGrace="0:00" IsMissedOutException="false" OutPunchLateInsideGrace="0:00" InPunchLateOutsideRound="0:01" InPunchLateOutsideGrace="0:00" InPunchEarlyChangePoint="2:00" UnscheduledInRound="0:01" InPunchEarlyInsideGrace="0:00" OutPunchLateOutsideGrace="0:00" InPunchLateInsideRound="0:01" InPunchLateInsideGrace="0:00" UseScheduledOut="true" OutPunchEarlyOutsideRound="0:01" Name="Transfer Rounding" OutPunchEarlyOutsideGrace="0:00" OutPunchEarlyInsideRound="0:01" UnscheduledInGrace="0:00" OutPunchLateChangePoint="0:00"/>
<WSAPunchRoundRule InPunchEarlyInsideRound="2:00" UnscheduledOutRound="0:01" InPunchEarlyOutsideGrace="0:00" InPunchEarlyOutsideRound="0:01" OutPunchEarlyChangePoint="0:00" OutPunchEarlyInsideGrace="0:00" OutPunchLateOutsideRound="0:01" OutPunchLateInsideRound="0:01" InPunchLateChangePoint="0:00" TransferRound="0:01" UnscheduledOutGrace="0:00" TransferGrace="0:00" IsMissedOutException="true" OutPunchLateInsideGrace="0:00" InPunchLateOutsideRound="0:01" InPunchLateOutsideGrace="0:00" InPunchEarlyChangePoint="2:00" UnscheduledInRound="0:01" InPunchEarlyInsideGrace="0:00" OutPunchLateOutsideGrace="0:00" InPunchLateInsideRound="0:01" InPunchLateInsideGrace="0:00" UseScheduledOut="false" OutPunchEarlyOutsideRound="0:01" Name="Workrule Rounding" OutPunchEarlyOutsideGrace="0:00" OutPunchEarlyInsideRound="0:01" UnscheduledInGrace="0:00" OutPunchLateChangePoint="0:00"/>
</Response>
【问题讨论】:
-
name是Attribute,而不是Element。