小编Mic*_*eck的帖子

C++初始化非静态成员数组

我正在编辑一些使用如下定义的全局数组的旧C++代码:

int posLShd[5] = {250, 330, 512, 600, 680};
int posLArm[5] = {760, 635, 512, 320, 265};
int posRShd[5] = {765, 610, 512, 440, 380};
int posRArm[5] = {260, 385, 512, 690, 750};
int posNeck[5] = {615, 565, 512, 465, 415};
int posHead[5] = {655, 565, 512, 420, 370};
Run Code Online (Sandbox Code Playgroud)

我想让所有这些数组成为下面定义的Robot类的私有成员.但是,当我声明数据成员时,C++编译器不允许我初始化数据成员.

class Robot
{
   private:
       int posLShd[5];
       int posLArm[5];
       int posRShd[5];
       int posRArm[5];
       int posNeck[5];
       int posHead[5];
   public:
       Robot();
       ~Robot();
};

Robot::Robot()
{
   // initialize arrays
}
Run Code Online (Sandbox Code Playgroud)

我想在Robot()构造函数中初始化这六个数组的元素.除了逐个分配每个元素之外,还有什么方法可以做到这一点吗?

c++ arrays default-constructor

15
推荐指数
3
解决办法
4万
查看次数

按钮onClick事件处理程序永远不会在Chrome中触发

我正在使用一个旧的ASP.NET WebForms应用程序,该应用程序具有带以下控件的.aspx页面:

<asp:Button ID="Budget_Approve" OnClick="Budget_Approve_Click" runat="server"
Visible="True" Width="100" Height="30" Text="Approve"></asp:Button>
Run Code Online (Sandbox Code Playgroud)

Budget_Approve_Click事件处理程序从未被击中,我试图以确定原因.我注意到页面加载时,执行此代码以向onclick属性添加一些内联j :

Budget_Approve.Attributes.Add("onclick", "return confirm_approve();");
Run Code Online (Sandbox Code Playgroud)

呈现的HTML:

<input type="submit" name="ctl00$mainContent$Budget_Approve" value="Approve"
onclick="return confirm_approve();WebForm_DoPostBackWithOptions(new
WebForm_PostBackOptions(&quot;ctl00$mainContent$Budget_Approve&quot;, 
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))"
id="ctl00_mainContent_Budget_Approve" style="height:30px;width:100px;">
Run Code Online (Sandbox Code Playgroud)

所以当我点击时,我希望confirm_approve()被执行.如果它返回true,我希望回发和我的事件处理程序触发.在Chrome中进行调试,我发现confirm_approve()确实会返回true:

javascript代码

但是,回发永远不会发生,Budget_Approve_Click事件处理程序永远不会被击中.为什么不?

编辑:我尝试删除完全添加内联JavaScript代码的行.但是,仍然没有回发.为按钮呈现以下HTML:

<input type="submit" name="ctl00$mainContent$Budget_Approve" 
value="Approve"
onclick="javascript:WebForm_DoPostBackWithOptions(new
WebForm_PostBackOptions(&quot;ctl00$mainContent$Budget_Approve&quot;,
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))"
id="ctl00_mainContent_Budget_Approve" style="height:30px;width:100px;" />
Run Code Online (Sandbox Code Playgroud)

更新:发现这回发不工作的IE浏览器,但仍然没有Chrome浏览器.是否存在可能导致此问题的特定于浏览器的设置或问题?

javascript asp.net google-chrome event-handling

5
推荐指数
1
解决办法
2489
查看次数

具有多态性和异常处理的XML反序列化

我使用Microsoft ASP.NET Web API创建服务,具有以下要求:

  1. 输入必须是XML(没有json)
  2. XML将遵循标准(不能将自定义元素名称/属性添加到输入xml)
  3. 当在反序列化中遇到异常时(即格式错误的数据值),必须将它们记录为警告并且必须继续解析输入xml
  4. XML将包含元素集合,其中元素需要反序列化为从基类型派生的类型

要求1和2只是定义我的输入.我开始使用内置System.Xml.Serialization.XmlSerializer类开发我的解决方案,但不得不放弃它,因为它无法处理需求#3.

或者,我发现YAXLib提供了一种处理需求#3 的非常有用的方法.

YAXLib还处理需求#4,但只能使用XML中的自定义属性:

  <ListOfObjects>
    <Object yaxlib:realtype="System.Int32">7</Object>
    <Object yaxlib:realtype="System.Double">3.14</Object>
    <Object yaxlib:realtype="System.String">Congrats</Object>
    <Object yaxlib:realtype="System.StringSplitOptions">RemoveEmptyEntries</Object>
  </ListOfObjects>
Run Code Online (Sandbox Code Playgroud)

由于要求#2,我不能使用这种方法.我需要类似的东西,System.Xml.Serialization.XmlElementAttribute所以我可以在代码中指示序列化程序,而不是在数据中.是否有现成的解决方案可以满足所有这些要求?

例:

输入

<DEALS>
    <DEAL>
        <COLLATERALS>
            <COLLATERAL>xyz</COLLATERAL>
            <COLLATERAL>1.2</COLLATERAL>
            <COLLATERAL>4.5</COLLATERAL>
        </COLLATERALS>
        <LOANS>
            <LOAN>
                <CLOSING_INFORMATION />
            </LOAN>
        </LOANS>
    </DEAL>
</DEALS>
Run Code Online (Sandbox Code Playgroud)

C#类

public class DEAL
{
    [System.Xml.Serialization.XmlElementAttribute("COLLATERALS", typeof(COLLATERALS))]
    [System.Xml.Serialization.XmlElementAttribute("LOANS", typeof(LOANS))]
    [YAXCollection(YAXCollectionSerializationTypes.RecursiveWithNoContainingElement)]
    public object[] Items
    {
        get
        {
            return this.itemsField;
        }
        set
        {
            this.itemsField = value;
        }
    }

    // Remaining implementation …
Run Code Online (Sandbox Code Playgroud)

c# xml deserialization

5
推荐指数
1
解决办法
782
查看次数

使用Razor将HTML属性中的代码和文本组合在一起

我正在<div>使用foreach带有Razor语法的循环创建一堆元素.现在我有这个:

@foreach (var item in Model)
{
    <div class="grid_6 listColumn" id="team_@item.TeamID">
    ...
    </div>
}
Run Code Online (Sandbox Code Playgroud)

基本上我希望div标识符用以下值中的值标记item.TeamID:

team_1 team_2 team_3

我目前拥有的语法无法识别代码部分.我也尝试了,id="team_@:item.TeamID"但它抛出了一个错误.但是,id="team_ @item.TeamID"工作正常,但我不希望那里有那个空间.我对Razor很新,有没有简单的方法呢?

html razor asp.net-mvc-3

4
推荐指数
1
解决办法
2316
查看次数