C# 下拉列表中模型的特定部分

C# 下拉列表中模型的特定部分,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,这就是我想要实现的 基本上我有Currency模型,其中包含ID,Name,BuyValue,MidValue,SellValue和DateCreated 现在我想在我设计的转换器中使用它们。它有两个下拉列表,其中第一个ddl是从转换的货币,第二个是从转换到转换的货币。普通的东西 第一个ddl应始终包含Name作为ddl中的文本和BuyValue作为值,而第二个ddl应始终包含Name作为文本和SellValue作为值。用简单的HTML术语来说就是这样 <select id="ddlFir

这就是我想要实现的

基本上我有
Currency
模型,其中包含
ID
Name
BuyValue
MidValue
SellValue
DateCreated

现在我想在我设计的转换器中使用它们。它有两个下拉列表,其中第一个ddl是从转换的货币,第二个是从转换到转换的货币。普通的东西

第一个ddl应始终包含
Name
作为ddl中的文本和
BuyValue
作为值,而第二个ddl应始终包含
Name
作为文本和
SellValue
作为值。用简单的HTML术语来说就是这样

<select id="ddlFirst">
    <option value="BuyValue1">Name1</option>
    <option value="BuyValue2">Name2</option>
    ...
</select>
<select id="ddlSecond">
    <option value="SellValue1">Name1</option>
    <option value="SellValue2">Name2</option>
    ...
</select>
不过这是空的(我知道不是

最让我感兴趣的是,我是否应该以某种方式将这些值划分为 使用不同的模型创建视图模型,或者 用它们吧

当然,您应该定义一个视图模型:

public class MyViewModel
{
    public string From { get; set; }
    public IEnumerable<SelectListItem> FromValues { get; set; }

    public string To { get; set; }
    public IEnumerable<SelectListItem> ToValues { get; set; }
}
最后是一个强类型视图:

@model MyViewModel

<div>
    @Html.LabelFor(x => x.From)
    @Html.DropDownListFor(x => x.From, Model.FromValues)
</div>
<div>
    @Html.LabelFor(x => x.To)
    @Html.DropDownListFor(x => x.To, Model.ToValues)
</div>
@model MyViewModel
@LabelFor(x=>x.From)
@DropDownListFor(x=>x.From,Model.FromValues)
@LabelFor(x=>x.To)
@DropDownListFor(x=>x.To,Model.ToValues)
最让我感兴趣的是,我是否应该以某种方式将这些值划分为 使用不同的模型创建视图模型,或者 用它们吧

当然,您应该定义一个视图模型:

public class MyViewModel
{
    public string From { get; set; }
    public IEnumerable<SelectListItem> FromValues { get; set; }

    public string To { get; set; }
    public IEnumerable<SelectListItem> ToValues { get; set; }
}
最后是一个强类型视图:

@model MyViewModel

<div>
    @Html.LabelFor(x => x.From)
    @Html.DropDownListFor(x => x.From, Model.FromValues)
</div>
<div>
    @Html.LabelFor(x => x.To)
    @Html.DropDownListFor(x => x.To, Model.ToValues)
</div>
@model MyViewModel
@LabelFor(x=>x.From)
@DropDownListFor(x=>x.From,Model.FromValues)
@LabelFor(x=>x.To)
@DropDownListFor(x=>x.To,Model.ToValues)

我收到以下错误。
System.NotSupportedException:LINQ to Entities无法识别方法'System.String ToString()'方法,并且无法将此方法转换为存储表达式。
您注意到我在回答中如何调用
.ToList())
\u db.currences
实例上的
来急切地加载它们吗?你在代码中也这么做了吗?啊,这完全是我的错。我认为如果我对获取货币的查询有点不同,那就没有问题了。
var currences=db.currences.Where(c=>c.DateCreated.Equals(今天))
这确实改变了一切。尝试更新了我的问题。这不会返回任何结果,尽管也许你可以看到我的错误。什么是空的?还有,为什么你要将结果集投影到匿名对象中?这完全没有必要。我得到以下错误。
System.NotSupportedException:LINQ到实体does无法识别方法'System.String ToString()'方法,并且无法将此方法转换为存储表达式。
您注意到我在回答中如何调用
.ToList()了吗
\u db.currences
实例上的
来急切地加载它们吗?你在代码中也这么做了吗?啊,这完全是我的错。我认为如果我对获取货币的查询有点不同,那就没有问题了。
var currences=db.currences.Where(c=>c.DateCreated.Equals(今天))
这确实改变了看起来的情况。尝试更新了我的问题。这不会返回任何结果,尽管也许你可以看到我哪里出了问题。什么是空的?还有为什么你要将结果集投影到匿名对象中?这绝对没有必要。