0

私は小さなことを機能させるのに苦労してきました。モデルの特定のフィールドにチェックボックスを表示したいと考えています。私のビューには @model として IEnumerable があります。

@model IEnumerable<DFIMAX_MVC4.NCSJServices.AxdEntity_LedgerJournalTrans>
@{
    ViewBag.Title = "ledgerJournalTrans";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>
    Sagslinjer</h2>
<p>
    @Html.ActionLink("Create New", "Create")
</p>
<div>
    @{
        var grid = new WebGrid(source: Model, defaultSort: "Name");
        var cols = grid.Columns(
               grid.Column(header: "", style: "ColPost", format: (item) => item.GetSelectLink("Bogfør")),
               grid.Column(header: "", style: "ColDelete", format: (item) => @Html.ActionLink("Slet", "Delete", new { id = item.RecId })),
               grid.Column(header: "", style: "ColEdit", format: (item) => @Html.ActionLink("Ret", "Edit", new { id = item.RecId })),
           grid.Column("NCPosted", style: "ColPosted", header: "Bogført", format: (item) => @Html.CheckBoxFor(item.NCPosted)),
               grid.Column("TransDate", style: "ColDate", header: "Dato", format: (item) => item.TransDate != null
                   ? item.TransDate.ToString("dd-mm-yyyy") : ""),
               grid.Column("NCCaseNumber", style: "ColCase", header: "Sag"),
               grid.Column("Approver", style: "ColInitials", header: "Init."),
               grid.Column("AccountType", style: "ColAccountType", header: "Type"),
               grid.Column("LedgerDimension.DisplayValue", header: "Part/Konto", style: "ColAccount"),
            //grid.Column("Art", header: "Art"),
               grid.Column("Txt", style: "ColTxt", header: "Reference"),
               grid.Column("Voucher", style: "ColVoucher", header: "Bilag"),
            //grid.Column("AmountCurDebit", header: "Debit", format: (item) => string.Format("{0:C}", item.AmountCurDebit)),
            //grid.Column("AmountCurCredit", header: "Kredit", format: (item) => string.Format("{0:C}", item.AmountCurCredit))
               grid.Column(columnName: "Amount", header: "Beløb", style: "ColAmount",
               format: (item) => string.Format("{0:C}", (item.AmountCurDebit != null ? item.AmountCurDebit : 0) - (item.AmountCurCredit != null ? item.AmountCurCredit : 0)))
           );
    }
    @grid.Table(
            columns: cols,
            footer: @<table class="footer">
                <tr>
                    <td class="ColPost">
                        Total
                    </td>
                    <td class="ColDelete">
                    </td>
                    <td class="ColEdit">
                    </td>
                    <td class="ColPosted">
                    </td>
                    <td class="ColApproved">
                    </td>
                    <td class="ColDate">
                    </td>
                    <td class="ColCase">
                    </td>
                    <td class="ColInitials">
                    </td>
                    <td class="ColAccountType">
                    </td>
                    <td class="ColAccount">
                    </td>
                    <td class="ColTxt">
                    </td>
                    <td class="ColVoucher">
                    </td>
                    <td class="ColAmount">
                        Totalbeløb
                    </td>
                </tr>
            </table>,
            tableStyle: "TransListTable",
            headerStyle: "TranslistHeader",
            footerStyle: "TransListFooter",
            alternatingRowStyle: "TransListAlternatingRow",
            selectedRowStyle: "TransListSelectedRow",
            rowStyle: "TransListRow")
</div>

問題は次の行です。

grid.Column("NCPosted", style: "ColPosted", header: "Bogført", format: (item) => @Html.CheckBoxFor(item.NCPosted)),

生成されるエラーは次のとおりです。

コンパイラ エラー メッセージ: CS1973: 'System.Web.Mvc.HtmlHelper>' には 'CheckBoxFor' という名前の適用可能なメソッドがありませんが、その名前の拡張メソッドがあるようです。拡張メソッドは動的にディスパッチできません。動的引数をキャストするか、拡張メソッド構文を使用せずに拡張メソッドを呼び出すことを検討してください。

私の他の行では、形式: (item) => が機能するのに、このチェックボックスでは機能しないのはなぜですか?

私も試しました:

grid.Column("NCPosted", style: "ColPosted", header: "Bogført", format: (item) => @Html.CheckBoxFor((bool)item.NCPostedValue)),

エラーが発生した場所は次のとおりです。

コンパイラ エラー メッセージ: CS1928: 'System.Web.Mvc.HtmlHelper>' には 'CheckBoxFor' の定義と最適な拡張メソッド オーバーロード 'System.Web.Mvc.Html.InputExtensions.CheckBoxFor(System.Web.Mvc. HtmlHelper, System.Linq.Expressions.Expression>)' には無効な引数があります

どんな助けでも大歓迎です。

敬具、

4

2 に答える 2

0

私はそれを考え出した:

columns.Add(grid.Column(header: "", style: "ColPost", format: (item) =>
        {
            bool t = ((DFIMAX_MVC4.NCSJServices.AxdEntity_LedgerJournalTrans)item.Value).NCPosted.GetValueOrDefault().Equals(DFIMAX_MVC4.NCSJServices.AxdExtType_JournalPosted.Yes) ? true : false;

            if (((DFIMAX_MVC4.NCSJServices.AxdEntity_LedgerJournalTrans)item.Value).LedgerDimension != null)
            {
                return Html.CheckBoxFor(x => t);
            }
            else
            {
                return "";
            }
        }));
于 2013-06-27T19:15:06.187 に答える
0

わかりました、これを試してください:

format: (item) => InputExtensions.CheckBoxFor(Html, item.NCPosted)
于 2013-06-25T09:06:34.817 に答える