我正在使用asp.net mvc。但是我无法使用Linq,因为数据库是一个externe数据库,其中包含超过2000个表。所以我不会'在项目中有db但在mysql manager 2014中。我现在用标准的sql查询数据。像这样:
public async Task<ActionResult> Index (int? SelectedVestiging)
{
var query = "SELECT Code from [Verploegen TEST$Location]";
Vestiging vestiging = await db.Vestigingen.SqlQuery(query, SelectedVestiging).FirstOrDefaultAsync();
if (vestiging == null)
{
return HttpNotFound();
}
return View(vestiging);
}
我有一个模型,如下:
public class Vestiging
{
[Key]
public string Code { get; set; }
}
该方法正在运行。因为我看到数据出现在vestiging中。这样才行。但现在我想在视图中拥有所有的vestigingen。有五种vestigingen。
我这样试试:
@Html.DropDownList("Code", "All")
但是我会得到这个错误:
附加信息:具有密钥&#39;代码&#39;的ViewData项目。属于&#39; System.String&#39;但必须是&#39; IEnumerable&lt; SelectListItem&gt;&#39;。
我现在就这样:
public async Task<ActionResult> Index (int? SelectedVestiging)
{
var query = "SELECT Code, Name from [Verploegen TEST$Location]";
Vestiging vestiging = await db.Vestigingen.SqlQuery(query, SelectedVestiging).FirstOrDefaultAsync();
if (vestiging == null)
{
return HttpNotFound();
}
var allITems = db.Vestigingen
.Select(s => new SelectListItem { Value = s.Code, Text = s.Code }).ToList();
ViewBag.WestVigs = allITems;
return View(vestiging);
}
和这样的观点:
@Html.DropDownList("Code", ViewBag.WestVigs as List<SelectListItem>);
但我收到错误:
列名称无效&#39;代码&#39;。
Beschrijving:Er is een onverwerkte uitzondering opgetreden tijdens het uitvoeren van de huidige webaanvraag。 Raadpleeg de stacktracering voor meer informatie over deze fout en de oorsprong ervan in de code。
详细信息van uitzondering:System.Data.SqlClient.SqlException:列名无效&#39;代码&#39;。
Fout in bron:
Regel 30: }
Regel 31:
Regel 32: var allITems = db.Vestigingen
Regel 33: .Select(s => new SelectListItem { Value = s.Code, Text = s.Code }).ToList();
Regel 34: ViewBag.WestVigs = allITems;
我仍然收到错误:
StickerPrinterWeb.DAL.Verploegen_TEST_Location: : EntityType 'Verploegen_TEST_Location' has no key defined. Define the key for this EntityType.
Locations: EntityType: EntitySet 'Locations' is based on type 'Verploegen_TEST_Location' that has no keys defined.
如果我这样做:
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.[Verploegen TEST$Location]")]
public partial class Verploegen_TEST_Location : INotifyPropertyChanging, INotifyPropertyChanged
{
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
private System.Data.Linq.Binary _timestamp;
[Key]
private string _Code;
答案 0 :(得分:0)
DropDownList
辅助方法希望您传递构建选择选项所需的数据。
如果您没有视图的视图模型,可以使用ViewBag从您的操作方法发送此信息。
// your existing code goes here
var allITems = db.Vestigingen
.Select(s=>new SelectListItem { Value =s.Code, Text= s.Code}).ToList();
ViewBag.WestVigs=allITems;
return View(vestiging);
并在您看来,
@Html.DropDownList("WestVigs")
这将生成一个SELECT元素,其name和id值设置为&#34; WestVigs
&#34;。如果您希望select元素具有不同的Id和Name值,则可以使用DropDownList
方法的另一个重载。
@Html.DropDownList("Code", ViewBag.WestVigs as List<SelectListItem>);
这将生成一个SELECT元素,其名称和id值设置为&#34; Code
&#34;