MVCCONTRIBグリッドカミソリの問題、column.actionはレンダリングしません
-
13-10-2019 - |
質問
以下のコードは、ASPXビューエンジンでうまく機能します。以下のようにRazorに変換しようとしています。問題は、最初の列が表示されないことです。
アクションメソッドを使用して、最初の列をリンクに変換します。 Razor IT(最初の列)はページにまったくレンダリングされていません。グリッドの残りの部分は大丈夫です。
何が問題なのでしょうか?
@{Html.Grid(Model.Orders).Attributes(style => "width: 100%;").Columns(
column => {
column.For(x => x.OrderNumber).Action(p => {
@:<td>
Html.ActionLink(
p.OrderNumber.ToString(),
"orderdetail",
"OrderUpdate",
new { id = p.OrderNumber, backUrl = Url.Action("OrderHistory", new { controller = "DataController", id = ViewData["id"] }) },
new { });
@:</td>
}).HeaderAttributes(style => "text-align:left");
column.For(x => x.OrderTimeV2).HeaderAttributes(style => "text-align:left");
column.For(x => x.Status).HeaderAttributes(style => "text-align:left");
column.For(x => x.Type).HeaderAttributes(style => "text-align:left");
}).RowStart((p, row) => { }).Render();}
解決
私たちが持っているグリッドではあまり意味がないので、MVCContribグリッドの使用から遠ざかりました。
とにかく問題は、質問のコードはHTMLを返さないが、コードを応答ストリームに直接配置することでした。また、呼び出されるたびにコードをストリームに入れたRazorを使用してレンダリングされた列のコード。そのため、グリッドがレンダリングされる前に列をストリームに入れてしまいます。
Gridによって呼び出されるRazorコードを使用しないことで解決されました。
他のヒント
わかりました、私はそれが私のために動作しました。
@Html.Grid(Model.Result).Columns(column => {
column.For(u => u.Name).Named("Name");
column.For(u => u.Code).Named("Code");
column.For(u => Html.ActionLink("Edit", "Edit", new { id = u.Id })).Named("Edit");
カスタム列を実行して、必要なものを取得できます。
@Html.Grid(Model).Columns(column => {
column.Custom(
@<div>
<em>Hello there</em>
<strong>@item.Name</strong>
</div>
).Named("Custom Column");
})
いくつかの.aspxページをRazorに移植するときにこれを行いました。
所属していません StackOverflow