编辑:看来我以错误的方式解决了这个问题。我将解释我需要发生什么
这是我的模特:
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>
}
基本上这就是我需要发生的事情:
用户转到页面。在我目前没有查看的文本框中,用户将输入一个数字。该数字将用于查找和返回实体框架中的数据。这个数据列表需要以某种方式临时存储。
我将在剃刀中使用for each循环来显示临时数据。
在搜索文本框中,用户将在临时数据中搜索项目编号。
如果项目编号在临时数据中退出,请将拾取设置为true。
重复操作,直到所有拾取的属性都设置为true。
答案 0 :(得分:2)
您没有为Items
创建任何输入元素,因此不会回发任何内容。
答案 1 :(得分:2)
如果您想要返回这些字段,则需要为它们创建隐藏字段。
@Html.HiddenFor(x => x.ItemName)
然后他们会按预期返回。
老实说虽然我可能只是在动作方法中填充模型,因为在帖子中你真正想要的就是搜索词。
答案 2 :(得分:2)
<h1>@item.ItemName</h1>
和<div>@item.Type</div>
只是变成纯文本(例如<h1>Item</h1>
),并且一旦转换为HTML就没有绑定到模型。您需要将它们存储在控制器操作可以理解的内容中,例如使用@Html.HiddenFor(x => x.ItemName)
或创建自己的HTML Helper,例如@ Html.DivFor。
答案 3 :(得分:1)
我已经看到了错误,您需要添加的所有内容都是隐藏字段,以便获取值。你可以在@Html.HiddenFor(x => x.ItemName)
内做一些事情,因为你在表格中这样做了。