4

MVC 4 テクノロジを使用して ASP.NET アプリケーションを作成しています。エンド ユーザーが明細項目を請求書に入力できるようにしたいと考えています。ユーザーが請求書に必要な数の明細項目を追加できるようにして、終了したらフォームの [保存] ボタンをクリックして、請求書とすべての明細項目データを書き込むことができるようにしたいと考えています。データベース。誰かがこれを処理する方法を教えてくれますか?

4

3 に答える 3

2

これは、他のいくつかのアイデアが失敗した後、私がそれを行うことにした方法です. 奇妙に聞こえるかもしれませんが、ご容赦ください。MVC Index View をベースとして使用しました。

ユーザーが請求書を見る前に、新しい請求書をデータベースに追加して、請求書 ID を取得します。次に、Invoice Index View を表示します。しかし、表を示す代わりに、@foreach (var item in Model)に変更しました@foreach (var item in Model.LineItems)。今は空白ですが、いくつかの LineItsms を追加すると、LineItems のリストが表示されます。これがまさに請求書です。

しかし、Invoice Index View も追加できるようにしたいと考えています。したがって、Index View の上部にあるコーディング可能な部分で、新しい LineItem を作成し、その LineItem.invoiceID を Model.ID として保存します。次に、LineItem のテーブルを表示する前に、部分ビュー - Create LineItem を追加します。

これで、新しいものを追加できるページに請求明細行のリストが表示されました。

LineItem の Index View のコードを次に示します。

@model MyAppName.Models.Invoice

@{
    ViewBag.Title = "Index";
    MyAppName.Models.LineItem line = new LineItem();
    line.invoiceID = Model.ID;
}

<h2>Invoice</h2>

@Html.Partial("Create", line)

<table>
    <tr>
        <th>
            @Html.DisplayName("Amount")
        </th>
        <th>
            @Html.DisplayName("Description")
        </th>
        <th></th>
    </tr>

@foreach (var item in Model.LineItems)
{
    <tr>
        <td>
@Html.DisplayFor(modelItem => item.Amount)
        </td>

@Html.DisplayFor(modelItem => item.Description
    </td>
    <td>
        @Html.ActionLink("Delete", "DeleteConfirmed", new { id = item.invoiceID })
    </td>
    </tr>
}
    <tr>
        <th>Total</th>
        <th>R @Model.LineItems.Sum(amt => amt.Amount)</th>
        <th></th>
        <th></th>
    </tr>
</table>

そして、これがどのように見えるかです(私のものは請求書ではなかったことを除いて):

スクリーンショット

于 2015-03-19T13:50:32.060 に答える
0

あなたはこのようなものが欲しい。しかし、あなたの場合はもっと複雑になります。jquery を使用して作業を簡素化します。

$('#add_item').click(function() {
    $('#invoice_listing tbody')
        .append(
            "<tr><td>" + $('#item').val() + "</td>" +
            "<td>" + $('#amount').val() + "</td></tr>"
        )
});

項目が追加されるたびに、[項目の追加] ボタンがイベントを発生させ、項目データの ajax ポストを MVC コントローラーに実行します。その後、コントローラーはビジネス ロジックを実行し、項目データをデータベースに保存します。トランザクションが成功すると、コントローラーは「成功」フラグをクライアント ブラウザーに返す必要があります。そのためにJSONを使用すると役立ちます。JavaScript が「成功」フラグを認識し、商品リストに商品を追加する必要があります。

最後に、[保存] ボタンを押すと、請求書データの入力が完了します。次に、請求書を正常に入力されたものとしてマークする必要があります。

ユーザーが保存せずに項目を追加し続けないようにしてください。アイテムの行を追加した後、保存に失敗すると怒られます。

于 2013-04-01T02:41:06.683 に答える