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 时,表格总是呈现在 div 之外的表格元素中。我也试过这个。

@{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 3 制作的版本,因为 ASP.NET MVC 2 的旧版本不适用于 Razor)。

然后像这样尝试:

@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 回答