1

私のシナリオはここにあります。複数選択リストボックスがあります。複数のレコードを選択してボタンを押すと、コントローラーの呼び出しメソッドで項目リストを選択する必要があります。私のコードは以下です

csthml コード:

@{
 Layout = "";
}
@using Telerik.Web.Mvc.UI;
@using System.Web;
@using System.Web.UI.WebControls;
@using System.Web.Mvc;

@model Nop.Plugin.Import.Product.Models.ImportProductModel
<div>
<div class="section-header">
    <div class="options">            
    @using (Html.BeginForm("ImportSelected",  "ImportProduct"))
    {
        <button type="submit">OK</button>
    }
    </div>
 </div>

 <table>
    <tr>
        <td>
            @Html.ListBox("Items", Model.nopCommerceCategories);
        </td>

        <td>
            @Html.ListBox("Items", Model.ClockCategories);
        </td>
    </tr>
    <tr>
        <td>
                @using (Html.BeginForm("SaveMapping", "ImportProduct"))
                {
                    <button type="submit">Save</button>
                }
        </td>
    </tr>
  </table>        
 </div>

モデル :

using System.Collections.Generic;
using System.Web.Mvc;
using Nop.Core.Domain.Catalog;

namespace Nop.Plugin.Import.Product.Models
{
    public class ImportProductModel
    {        
        public List<SelectListItem> nopCommerceCategories { get; set; }
        public List<SelectListItem> ClockCategories { get; set; }
    }
}
4

2 に答える 2

0

注意: リストボックスの最初のパラメータは、コントローラに送信したい名前です! したがって、次のようなコードを使用する必要があります。

@Html.ListBox("nopCommerceCategories", Model.nopCommerceCategories);
@* or this code :
@Html.ListBoxFor(model => model.nopCommerceCategories);
*@

そして、次の署名でコントローラーを呼び出すと:

 public ActionResult SaveMapping(ImportProductModel ipm) {
     // here you have access to ipm.nopCommerceCategories
 }

さらに、取得したいデータを含むすべてのコードを 1 つの形式でカプセル化する必要があります。複数のアクションで送信する場合は、正しいアクションを取得してデータを送信するために JavaScript コードを追加します...

于 2013-04-10T13:00:12.210 に答える
0

フォームには送信ボタンしかありません。リストボックスをフォーム内に配置する必要があります。フォームが送信されると、リストボックスの値とフォーム内の他のすべてがフォームが指すアクションに送信されます。

于 2013-04-10T13:02:30.307 に答える