RenderPartial не рендеринг внутри div

Привет, у меня возникли некоторые проблемы с пониманием, как работают MVC 3 и бритва. По сути, у меня есть представление, которое отображается с частичной 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();
        }      
}

Однако, когда я смотрю на DOM в firebug, таблица ВСЕГДА отображается вне 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>
}

.. но безрезультатно. Я что-то упускаю?

Если я не совсем уверен или вам нужна дополнительная информация, просто спросите, а не голосуйте.

2 ответа

Решение

Вы, кажется, используете 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 метод на сетке.

Html.RenderPartial пишет непосредственно в ответ. Я думаю, что вы хотите здесь, это Html.Partial.

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

Смотрите этот вопрос для более подробной информации

Другие вопросы по тегам