4

かなり複雑なテーブルと Razor タグに問題があります。

「@」を一番多く取りました。(例 if の前など)。

私は約30分間遊んでいましたが、それを行う方法を見つけることができないようです. / または類似のタグに終了タグがないというエラーが常に発生します。@: などで遊んでみましたが、取得できません。

誰かが私を助けてくれたり、@: タグについてまともな説明をしてくれたりしたら、とてもありがたいです。

<div>
    if (Model.dsInfoUser.Tables[0].Rows.Count != 0)
    {
        <table>
            for (int i = 0; i < Model.dsInfoUser.Tables[0].Rows.Count; i++)
            {
                if (i % 2 == 1)
                {
                    <tr class="tableEven">
                }
                else
                {
                    <tr class="tableOdd">
                }
                    @*Picture*@
                    if (i == 0)
                    {
                        <td rowspan="@Model.dsInfoUser.Tables[0].Rows.Count" class="tblPicture"><img src="@Model.dsInfoUser.Tables[0].Rows[i][1]" /></td>
                    }
                    <td>
                        @Model.dsInfoUser.Tables[0].Rows[i][0].ToString()
                    </td> 
                    <td>
                        @Model.dsInfoUser.Tables[0].Rows[i][1].ToString()
                    </td> 
                </tr> 
                if (i == 5)
                {
                    <tr>
                        <td>
                            <text>Member Of:</text>
                        </td>
                            <td>
                                <table>
                                    for (int j = 0; j < Model.dsInfoUser.Tables[1].Rows.Count; j++)
                                    {
                                    if (j % 2 == 1)
                                    {
                                        <tr class="tableEven">
                                    }
                                    else
                                    {
                                        <tr class="tableOdd">
                                    }
                                        <td rowspan="3">
                                            <div style="width: 400px; overflow-y: scroll">

                                            </div>
                                        </td>
                                    </tr>
                                </table>
                            </td>
                    </tr>
                }
        </table>
    }
</div>

知りたい人のために、ここに修正版があります:

<div>
    @if (Model.dsInfoUser.Tables[0].Rows.Count != 0)
    {
        <table>
            @for (int i = 0; i < Model.dsInfoUser.Tables[0].Rows.Count; i++)
            {
                <tr class="@(i % 2 == 1 ? "tableEven" : "tableOdd")">
                    @if (i == 0)
                    {
                        <td rowspan="@Model.dsInfoUser.Tables[0].Rows.Count" class="tblPicture"><img src="@Model.dsInfoUser.Tables[0].Rows[i][1]" /></td>
                    }
                    <td>
                        @Model.dsInfoUser.Tables[0].Rows[i][0].ToString()
                    </td> 
                    <td>
                        @Model.dsInfoUser.Tables[0].Rows[i][1].ToString()
                    </td> 
                </tr> 
                    if (i == 5)
                    {
                    <tr>
                        <td>
                            <text>Member Of:</text>
                        </td>
                            <td>
                                <table>
                                    @for (int j = 0; j < Model.dsInfoUser.Tables[1].Rows.Count; j++)
                                    {
                                        <tr class="@(i % 2 == 1 ? "tableEven" : "tableOdd")">
                                            <td rowspan="3">
                                                <div style="width: 400px; overflow-y: scroll">
                                                </div>
                                            </td>
                                        </tr>
                                    }
                                </table>
                            </td>
                    </tr>
                    }
            }
        </table>
    }
</div>
4

2 に答える 2

11

そんなことはできません。Razor は適切に階層化されていることを期待しています。特に、これは違法です:

if(condition)
{
    <foo>
}
else
{
    <foo>
}
</foo>

私たち二人はそれが整形式の であることを知っていますが<foo></foo>、剃刀はそれをそのように認識しません。2 unclosed<foo>と、どこからともなくまったく関係 </foo>のない 2 が表示されます。

あなたの場合、これを行う方法は次のとおりです。

<tr class="@(i % 2 == 1 ? "tableEven" : "tableOdd")">
   <td>...</td>
</tr>
于 2012-08-17T23:20:43.507 に答える
1
if (i % 2 == 1)
{
    <tr class="tableEven">
}
else
{
    <tr class="tableOdd">
}

おそらくあなたに問題を与えているのは

あなたはそれを次のように書き直すことができるはずです

 string className = i%2 == 1 ? "tableEven" : "tableOdd"
 <tr class="@className">

パーサーを幸せにします

于 2012-08-17T23:23:40.580 に答える