我正在使用SelectList,并使用表中的数据填充它。我正在尝试将其绑定到另一个对象的ID。
修改 更新了Schema以反映我忽略的东西。我已更新它以显示每个项目的完全名称。我认为问题在于每个单元都有一张纸,而每张纸都有一个产品。 (该表格将包含该产品的更多信息,但是一个单位将提供大量其他信息,因此我想将它们分开,以便清楚地了解它是什么。)
我认为发生了一些事情并且“Sheet”没有被初始化为一个对象,并且当绑定发生时,它没有要绑定的对象,因为它是一层深度。告诉我这是否有意义,或者我是否完全偏离基础。
**Unit**
UnitID (PK)
**ProductSheet**
UnitId (FK)(PK)
ItemId (FK)
**Items**
ItemId (PK)
ItemTitle
它只是......不起作用。我有这个代码。
DatabaseDataContext db = new DatabaseDataContext();
Unit unit = new Unit();
ViewData["Items"] = new SelectList( db.Items, "Id", "ItemTitle", unit.ProductSheet.ItemId);
但是在回发中,selectList始终为null且为空!这是View代码。我真的迷失在这里,我已经按照了很多例子,它仍然提出了铺位。
<%= Html.DropDownList("Items") %>
答案 0 :(得分:3)
您的观看代码应为:
<% var selectItems = ViewData["Items"] as SelectList; %>
<%= Html.DropDownList("ProductSheet.ItemId", selectItems) %>
答案 1 :(得分:0)
项目的整个示例位于this url
这些是行动方法。
public ActionResult Create()
{
DatabaseDataContext database = new DatabaseDataContext();
Unit u = new Unit();
u.Sheet = new Sheet();
ViewData["ProductListing"] = new SelectList(database.Products, "ProductId", "ProductName", u.Sheet.ProductId);
return View();
}
//
// POST: /Home/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Unit u)
{
try
{
DatabaseDataContext database = new DatabaseDataContext();
database.Units.InsertOnSubmit(u);
database.SubmitChanges();
// TODO: Add insert logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
这是创建视图。
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MVC.Models.Contexts.Unit>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Create
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Create</h2>
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<% using (Html.BeginForm()) {%>
<fieldset>
<legend>Fields</legend>
<%= Html.DropDownList("ProductListing") %>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
<div>
<%=Html.ActionLink("Back to List", "Index") %>
</div>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ScriptContent" runat="server">
</asp:Content>
答案 2 :(得分:0)
我已经标记了现在似乎取得了一些进展的答案,我想我已经开始更好地理解它了。
当我传递对象的'path'以在DropDownList的名称字段中指定为字符串时,它似乎有效。但这对我来说并没有多大意义。你能更好地解释一下发生了什么吗?