0

这就是我想要完成的。

基本上我的Currency模型包含ID, Name, BuyValue, MidValue,SellValueDateCreated.

现在我想在我想出的转换器中使用它们。它有两个下拉列表,其中第一个 ddl 是哪个货币转换而来,第二个是转换哪个货币。常规的东西。

第一个 ddl 应始终包含Nameddl 中的文本和BuyValue值,而第二个应始终包含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>

当然这不是它的代码,它只是澄清上面的解释。
我在这件事上是个初学者,实际上不知道从哪里开始。最让我感动的是我应该以某种方式将这些值分成不同的模型并从中创建一个视图模型,还是我可以以某种方式使用它们。老实说,我很困惑,所以任何帮助表示赞赏。

更新

var currencies = db.Currencies.Where(c => c.DateCreated.Equals(today));
var list = currencies.Select(s => new { s.ID, s.Name, s.BuyValue, s.SellValue }).ToList();

var model = new ConverterViewModel
{
    FromValues = list.Select( x => new SelectListItem { Value = x.BuyValue.ToString(), Text =  x.Name}),
    ToValues = list.Select(x => new SelectListItem { Value = x.SellValue.ToString(), Text = x.Name }),
};

不过,这是空的。:( 我知道不是。

4

1 回答 1

5

最让我感动的是我应该以某种方式将这些值分成不同的模型并从中创建一个视图模型,还是我可以以某种方式使用它们。

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

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; }
}

然后让控制器操作填充此视图模型并将其传递给视图:

public ActionResult SomeAction()
{
    var currencies = _db.Currencies.ToList();
    var model = new MyViewModel
    {
        FromValues = currencies.Select(x => new SelectListItem { Value = x.BuyValue.ToString(), Text = x.Name }),
        ToValues = currencies.Select(x => new SelectListItem { Value = x.SellValue.ToString(), Text = x.Name })
    };
    return View(model);
}

最后有一个强类型视图:

@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>
于 2012-10-19T08:45:41.580 回答