MVCCONTRIBグリッドカミソリの問題、column.actionはレンダリングしません

StackOverflow https://stackoverflow.com/questions/4750299

質問

以下のコードは、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");
})

から: mvccontribグリッドカスタム列(かみそり)

いくつかの.aspxページをRazorに移植するときにこれを行いました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top