こんにちは、私はMVC Razorアプリケーションをeカタログとして持っており、ドロップダウンリストを使用してDBからデータをバインドしましたが、DDlは3つのカテゴリ「x、Y、Z」があるかのようにDBから同じ値をバインドし、 DDLは同様の値を返しました「Z」 ,Z , Z ".最後の値は "y" であるため。また、ユーザーがDDLからアイテムを選択したときに、選択した値「ID」を DB に挿入しようとしましたが、失敗し、誤った選択値が返されました。
public class CategoryController : Controller
{
private AndriodContext db = new AndriodContext();
List<SelectListItem> items = new List<SelectListItem>();
List<string> category = new List<string>();
SelectListItem s = new SelectListItem();
//
// GET: /Category/
public ActionResult Index()
{
var x = db.Categories.Where(y => y.Active == true).ToList();
return View(x);
}
public ActionResult Create()
{
var data = db.Categories.ToList().Distinct();
List<string> x = new List<string>();
foreach (var t in data)
{
s.Text = t.Name;
s.Value = t.Cat_ID.ToString();
items.Add(s);
}
ViewBag.Parent = items;
return View();
}
//
// POST: /Category/Create
[HttpPost]
public ActionResult Create(Category category, IEnumerable<HttpPostedFileBase> files)
{
var data = db.Categories.ToList().Distinct();
List<SelectListItem> items = new List<SelectListItem>();
foreach (var t in data)
{
SelectListItem s = new SelectListItem();
s.Text = t.Name;
s.Value = t.Cat_ID.ToString();
items.Add(s);
if (s.Selected)
{ category.Parent_ID = int.Parse(s.Value); }
}
db.Categories.Add(category);
db.SaveChanges();
return RedirectToAction("Index");
}
}
@using (Html.BeginForm("Create", "Category", FormMethod.Post, new { enctype = "multipart/form-data", @data_ajax = "false" })) { @Html.ValidationSummary(true)
<fieldset>
<legend></legend>
<div class="editor-field create-Bt3">
@Html.DropDownList("Parent", new SelectList(ViewBag.Parent, "Value", "Text"), "- Select Parent -")
</div>
<div>
<p class="create-Bt ">
<input type="submit" value="Create" />
</p>
</div>
<br />
<br />
<div>
@Html.ActionLink("Back to List", "Index")
</div>
</fieldset>
}