1

こんにちは、MVC 3 と razor の仕組みを理解するのに問題があります。基本的に、Html.Render パーシャルでレンダリングされたビューがあります。基本的に、div内のコンテンツまたは部分ビューをそのようにレンダリングしようとしています。

<div id="mydiv.id">
@{Html.RenderPartial("_BankAccountGrid", Model.CheckAccounts);}
</div>


@if (Model.Any())
{        

        @{Html.Grid(Model).Columns(c =>
        {
                c.For(a => Html.ActionLink(
                    "Edit",
                    "EditBankAccountDetails",
                    "UserManagement",
                    new { Id = a.Id }, new { id = "modalEdit" }));
                c.For(a => a.AccountName);
                c.For(a => a.AccountNumber);
                c.For(a => a.RoutingNumber);
                c.For(a => a.BankName);
                c.For(a => a.CheckAccountType);
                c.For(a => a.AccountType_Id).Visible(false);
                c.For(a => a.version).Visible(false);
                c.For(a => a.IsDefault).Visible(false);
                c.For(a => a.User_Id).Visible(false);
                c.For(a => a.Id).Visible(false);
            }).Render();
        }      
}

ただし、firebug で DOM を見ると、Table は常に div の外側の table 要素だけにレンダリングされます。私もこれを試しました。

@{Html.RenderPartial("_BankAccountGrid", Model.CheckAccounts);}


@if (Model.Any())
{        
    <div id="accounts.grid.div">
        @{Html.Grid(Model).Columns(c =>
        {
                c.For(a => Html.ActionLink(
                    "Edit",
                    "EditBankAccountDetails",
                    "UserManagement",
                    new { Id = a.Id }, new { id = "modalEdit" }));
                c.For(a => a.AccountName);
                c.For(a => a.AccountNumber);
                c.For(a => a.RoutingNumber);
                c.For(a => a.BankName);
                c.For(a => a.CheckAccountType);
                c.For(a => a.AccountType_Id).Visible(false);
                c.For(a => a.version).Visible(false);
                c.For(a => a.IsDefault).Visible(false);
                c.For(a => a.User_Id).Visible(false);
                c.For(a => a.Id).Visible(false);
            }).Render();
        }
    </div>
}

..しかし無駄に。足りないものはありますか?

私が十分に明確でない場合、またはより多くの情報が必要な場合は、投票する代わりに質問してください.

4

2 に答える 2

2

Html.RenderPartial は、応答に直接書き込みます。ここで必要なのは Html.Partial だと思います。

<div id="mydiv.id">
@Html.Partial("_BankAccountGrid", Model.CheckAccounts)
<div>

詳細については、この質問を参照してください

于 2012-04-03T16:51:18.330 に答える
0

MvcContrib.Grid を使用しているようです。あなたはあなたの質問でそれを言及したはずです。最初に、最新バージョン (ASP.NET MVC 2 の古いバージョンは Razor でうまく動作しないため、ASP.NET MVC 3 用に作成されたバージョン) をダウンロードしたことを確認します。

次に、次のように試してください。

@if (Model.Any())
{        
    @(Html
        .Grid(Model)
        .Columns(c =>
        {
            c.Custom(
                @<text>
                    @Html.ActionLink(
                        "Edit", 
                        "EditBankAccountDetails", 
                        "UserManagement", 
                        new { Id = item.Id }, 
                        new { id = "modalEdit" }
                    )
                 </text>
            ).Named("");

            c.For(a => a.AccountName);
            c.For(a => a.AccountNumber);
            c.For(a => a.RoutingNumber);
            c.For(a => a.BankName);
            c.For(a => a.CheckAccountType);
            c.For(a => a.AccountType_Id).Visible(false);
            c.For(a => a.version).Visible(false);
            c.For(a => a.IsDefault).Visible(false);
            c.For(a => a.User_Id).Visible(false);
            c.For(a => a.Id).Visible(false);
        })
     )
}

Customに列を使用しており、グリッドでメソッドをActionLink呼び出していないことに注意してください。.Render

于 2012-04-03T16:49:02.410 に答える