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

您没有为 创建任何输入元素Items,因此不会发回任何内容。

于 2013-09-27T14:15:07.410 回答
2

如果您希望返回这些字段,则需要为它们创建隐藏字段。

@Html.HiddenFor(x => x.ItemName)

然后他们将按预期返回。

老实说,虽然我可能只是在 action 方法中填充模型,因为你想要在帖子中返回的只是搜索词。

于 2013-09-27T14:15:59.780 回答
2

<h1>@item.ItemName</h1>并且<div>@item.Type</div>只是转换为纯文本(例如,<h1>Item</h1>),并且一旦转换为 HTML,就不会绑定到模型。您需要将它们存储在控制器操作可以理解的东西中,例如使用@Html.HiddenFor(x => x.ItemName)或创建您自己的 HTML Helper,例如 @Html.DivFor。

于 2013-09-27T14:20:47.547 回答
1

我已经看到了错误,您需要添加的只是一个隐藏字段,以便它获取值。您可以执行类似的操作,@Html.HiddenFor(x => x.ItemName)因为您在表单中执行此操作。

于 2014-04-19T03:41:00.283 回答