10

私はNopcommerceに取り組んでおり、請求書を生成する必要があります(カスタムメイドは、私たちの目的を解決しないため、すでに提供されているものとは異なります)。コントローラのメソッドを使用して(別のcshtmlファイルを使用して)新しいタブで請求書を生成する必要があります。また、モデルデータをビューに渡します。

<tr>
        <td class="adminTitle">
            @Html.NopLabelFor(model => model.ProbableDeliveryDate):
        </td>
        <td class="adminData">
            @Html.EditorFor(model=>model.ProbableDeliveryDate)
        </td>
        </tr>
        <tr>
            <td>
            @if(Model.CanGenrateInvoice)
            {
                 <input type="submit" name="generateinvoice" value="@T("Admin.Orders.Fields.generateinvoice")" id="generateinvoice" class="adminButton"  />
            }
            </td>
        </tr>

probableDeliveryDateの値を取得するためにデータをコントローラーメソッドに投稿し、その後、新しいタブでビューを開きたいと思います。

これどうやってするの?

4

1 に答える 1

14

Html.ActionLink を介して最初のページからアクションにアクセスする場合は、次のようにすることができます。

Html.ActionLink("Open Invoice", "ActionName","ControllerName", new { id = Model.InvoiceID }, new { target = "_blank" });

target = "_blank" を指定すると、新しいタブで開きます

アップデート

モデルをコントローラーに投稿しているので(RedirectToActionが新しいウィンドウ/タブを開くのに役立つことを望んでいましたが、そうではないようです)

私のスパイシーな感覚は、あなたが持っている流れにうずきます...これは私だけですが、私は何か少し違うことをします..など

  1. モデルをコントローラーにポストする
  2. 請求書を生成するデータを保存する
  3. InvoiceID をアクションに返す
  4. InvoiceID をモデルに追加する
  5. モデルをビューに送り返す
  6. ユーザーに次のことを通知します。
  7. 請求書が生成され、上記のようなリンクが表示され、ユーザーが請求書を開くことができます OR
  8. これにより、モデル エラーがあった場合に表示するための完璧なクリーン ソリューションが提供されます。

ビューには、それを行うかみそりのコードが含まれている可能性があります。

@{
    if(Model.InvoiceID != null && Model.InvoiceID !=0) {
        @Html.ActionLink("Open Invoice", "ActionName","ControllerName", new { id = Model.InvoiceID }, new { target = "_blank" });
    } 
}
于 2012-05-12T12:05:27.263 に答える