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>
Смотрите этот вопрос для более подробной информации