0

編集:この問題に間違った方法でアプローチしたようです。私は何が起こる必要があるかを説明します

これが私のモデルです:

public class  Items 
{
    public string ItemName { get; set; }
    public string Type { get; set; }
    public bool Picked { get; set; }
}

これは私のコントローラーです:

public class InvoiceController : Controller
    {
        [HttpGet]
        public ActionResult Index()
        {
            using (TPGEntities context = new TPGEntities())
            {
                List<Items> result = (from a in context.IV00101
                                      select new Items { ItemName = a.ITEMDESC, Type = a.ITEMNMBR, Picked = false }).Take(10).ToList();

                return View(result);
            }
        }

        [HttpPost]
        public ActionResult Index(string searchTerm, IList<Items> model)
        {
            return View();
        }
    }

そして私の見解:

@model IList<SampleEnterprise.Models.Items>

@{
    ViewBag.Title = "Repair Invoicing";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Repair Invoicing</h2>

    @using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "partsList" }))
    {
        <input type="search" name="searchTerm" />
        <input type="submit" value="OK" />

        <div id="partsList">

            @foreach (var item in Model)
            {
                <h1>@item.ItemName</h1>
                <div>@item.Type</div>
                <div>
                    @if (@item.Picked)
                    {
                        <img src="~/Images/checkbox.png" />
                    }
                </div>
            }
        </div>
    }

基本的にここに私が起こる必要があるものがあります:

  1. ユーザーがページに移動します。現在表示されていないテキストボックスに、ユーザーは数字を入力します。その番号は、エンティティ フレームワークからデータを検索して返すために使用されます。このデータのリストは、何らかの方法で一時的に保存する必要があります。

  2. razor で for each ループを使用して一時データを表示します。

  3. 検索テキストボックスで、ユーザーは項目番号の一時データを検索します。

  4. 項目番号が一時データに存在する場合は、picked を true に設定します。

  5. 選択したすべてのプロパティが true に設定されるまで繰り返します。

4

4 に答える 4

2

<h1>@item.ItemName</h1><div>@item.Type</div>は単純にプレーン テキスト (例: )<h1>Item</h1>に変換され、HTML に変換されるとモデルへのバインディングはありません。@Html.HiddenFor(x => x.ItemName)たとえば、@Html.DivFor のような独自の HTML ヘルパーを使用または作成して、コントローラー アクションが理解できるものにそれらを格納する必要があります。

于 2013-09-27T14:20:47.547 に答える
1

エラーを確認しましたが、追加する必要があるのは、値を取得するために非表示のフィールドだけです。@Html.HiddenFor(x => x.ItemName)フォーム内で行うので、次のようなことができます。

于 2014-04-19T03:41:00.283 に答える