我正在构建一个ASP.NET MVC应用程序,我想在其中显示有关交换市场的数据。我的数据库中有三个表(EurUsd,EurChf和UsdJpy)。在我的应用程序中,我创建了三个模型,类似于数据库中的表。 在我看来,我有三个动作链接,当用户点击其中一个时,他们从控制器调用一个特定的方法。
由于方法类似,只是数据库表不同,我想知道是否可以将表从视图传递给控制器以及如何在控制器中写入它。
我知道如何将数据从视图发送到控制器,但我无法弄清楚如何选择从中检索数据的表。
这是我的代码:
public ActionResult EurUsdData()
{
var model = from r in db.EurUsd
orderby r.DATE ascending
select new Currency
{
ID = r.EurUsdID,
DATE = r.DATE,
OPEN = r.OPEN,
LOW = r.LOW,
HIGH = r.HIGH
};
return PartialView("_CurrencyTable", model.ToList());
}
public ActionResult EurChfData()
{
var model = from r in db.EurChf
orderby r.DATE ascending
select new Currency
{
ID = r.EurChfID,
DATE = r.DATE,
OPEN = r.OPEN,
LOW = r.LOW,
HIGH = r.HIGH
};
return PartialView("_CurrencyTable", model.ToList());
}
public ActionResult UsdJpyData()
{
var model = from r in db.UsdJpy
orderby r.DATE ascending
select new Currency
{
ID = r.UsdJpyID,
DATE = r.DATE,
OPEN = r.OPEN,
LOW = r.LOW,
HIGH = r.HIGH
};
return PartialView("_CurrencyTable", model.ToList());
}
<ul class="sidebar-nav"
<li>
<div class="sidebar-brand">
Meniu
</div>
</li>
<li>
@Ajax.ActionLink("EUR / USD", "EurUsdData", "Currencies",new AjaxOptions { HttpMethod = "get", InsertionMode = InsertionMode.Replace, UpdateTargetId = "CurrencyTableSection" });
</li>
<li>
@Ajax.ActionLink("EUR / CHF", "EurChfData", "Currencies", new AjaxOptions { HttpMethod = "get", InsertionMode = InsertionMode.Replace, UpdateTargetId = "CurrencyTableSection" });
</li>
<li>
@Ajax.ActionLink("USD / JPY", "UsdJpyData", "Currencies", new AjaxOptions { HttpMethod = "get", InsertionMode = InsertionMode.Replace, UpdateTargetId = "CurrencyTableSection" });
</li>
</ul>
谢谢!
答案 0 :(得分:0)
我不确定我是否完全理解你的问题,因为看起来你已经处于良好的状态。例如,点击“EUR / USD”链接会转到EurUsdData
操作,然后使用EurUsd
DbSet
。没有必要指定一个表,因为通过采取适当的操作来使用正确的表。
如果你的意图是只有一个通用动作而不是这三个单独的动作,我实际上会在评论中提出与@Tim相同的建议:首先没有理由将它们作为三个单独的表。架构是完全相同的,所以您只需要添加一两列,以便区分各种汇率。例如,您可以添加FROM
和TO
列,以使EurUsd
中当前的值FROM
为“EUR”和TO
为“美元”。然后,您可以根据这些列简单地查询该单个数据集,以获得您需要的子集。