.NET MVC - 将数据库表从视图传递到控制器

时间:2016-06-04 11:52:37

标签: asp.net-mvc

我正在构建一个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>

谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解你的问题,因为看起来你已经处于良好的状态。例如,点击“EUR / USD”链接会转到EurUsdData操作,然后使用EurUsd DbSet。没有必要指定一个表,因为通过采取适当的操作来使用正确的表。

如果你的意图是只有一个通用动作而不是这三个单独的动作,我实际上会在评论中提出与@Tim相同的建议:首先没有理由将它们作为三个单独的表。架构是完全相同的,所以您只需要添加一两列,以便区分各种汇率。例如,您可以添加FROMTO列,以使EurUsd中当前的值FROM为“EUR”和TO为“美元”。然后,您可以根据这些列简单地查询该单个数据集,以获得您需要的子集。