3

myClientRazor コードの変数スコープに問題があります。解決策は簡単だと確信しています。基本的に@{}、問題を引き起こしている可能性のある別のブロックで参照していますが、これを行わない限りif..{}、HTML でコードを取得しているようです。

@{
int i = 0;
foreach (var item in Model.Clients)
    {
        Int32 myId = Convert.ToInt32(item.DBID);
        var myClient = db.Client.Where(c => c.Id == myId).First();
    <td>
        <table class="inner">
        <tr><th>
            @string.Format(
                "{0} {1} {2}",
                myClient.Title,
                myClient.Initials,
                myClient.LastName)

                @{
                    if (myClient.Type!="Primary")
                    {
                        @Html.ActionLink(
                            "Delete", 
                            "Delete", 
                            "ClientBackground", 
                            new { id=item.ID }, null)
                    }
                 }
            </th></tr>
        }
        <table>

私のコードは を参照できませんmyClient.Type。周囲を削除する@{}と、HTML に c# コードが表示されます。

私が知っている単純なことですが、私はそれを見ることができません。

どんな助けでも大歓迎です。

編集:テーブルは閉鎖されました。

4

2 に答える 2

2

これを試して:

<table class="inner">
              @{int i = 0;}

              @foreach (var item in Model.Clients)
                  {
                      Int32 myId = Convert.ToInt32(item.DBID);
                      var myClient = db.Client.Where(c => c.Id == myId).First();


                            <tr><td>@string.Format("{0} {1} {2}",myClient.Title,myClient.Initials,myClient.LastName)
                                    @if (myClient.Type!="Primary")
                                        {
                                        @Html.ActionLink("Delete", "Delete","ClientBackground", new { id=item.ID },null)
                                }

                    </td></tr>
              }

</table>

私はフォーマットについて多くの推測をしました。重要なのは、あなたの int 割り当てを独自のブロックに入れたことです。オープニングとクロージング<tr>の and<td>を合わせて入れて、オプショナルの外に出しました@if blocks。しかし、このバージョンはコンパイルされます。

于 2013-04-11T12:58:17.793 に答える