如何在ASP.NET MVC中使用数据集值?

时间:2014-03-15 20:07:26

标签: asp.net asp.net-mvc web-services asp.net-mvc-4 dataset

我以数据集

的形式从web service获取值(货币汇率)
using Overstock.OverstockCurrency;
using System.Data;

这是我的行动

public ActionResult CurrencyConvertor()
    {
        DataSet ds = new DailyInfoSoapClient().GetCursOnDate(DateTime.Today);
        return View(ds);
    }

我不知道如何在视图中使用数据集值。所以我的问题是如何在视图中使用数据集值?我应该以什么形式从控制器发送到视图?如何在视图中使用发送的数据?

更新

我试图转换为DataTable并将Datatable发送到视图

public ActionResult CurrencyConvertor()
        {
            DataSet ds = new DailyInfoSoapClient().GetCursOnDate(DateTime.Today);
            DataTable Table = ds.Tables[0];
            return View(Table);
        }

在视图中,我正在使用列和行:

    @model System.Data.DataTable
@using System.Data

@{
    ViewBag.Title = "CurrencyConvertor";
}

<h2>CurrencyConvertor</h2>

<table> 
    <thead> 
    <tr> 
    @foreach (DataColumn col in Model.Column)     
    {          
        <th>@col.ColumnName</th> 
    }     
    </tr> 
    </thead>         
    <tbody> 
    @foreach (DataRow row in Model.Rows)     
    {         
        <tr> 
        @foreach (DataColumn col in Model.Columns)         
        {              
            <td>@row[col.ColumnName]</td> 
        }         
        </tr> 
    }     
    </tbody> 
</table>

我已经运行了该应用程序。它给出了这个编译错误:

  

CS1061:&#39; System.Data.DataTable&#39;不包含的定义   &#39;柱&#39;并且没有扩展方法&#39; Column&#39;接受第一个论点   类型&#39; System.Data.DataTable&#39;可以找到(你错过了吗?   使用指令或程序集引用?)

来源错误:

  

第13行:@foreach(Model.Column中的DataColumn col)

为了使用Model.Column,我应该提供参考(@using)?

1 个答案:

答案 0 :(得分:0)

我们的想法是拥有一个可以传递给视图的模型。

我不知道你的GetCursOnDate()方法返回什么(我的意思是该数据集的形式是什么),但无论如何我很确定你有一个已知的结构集

了解这一点,您必须创建一个模型来映射您感兴趣的DataSet数据,然后将模型作为参数传递给视图。

如果您不知道GetCursOnDate()的结果,可以使用调试器搜索您感兴趣的值。

public ActionResult CurrencyConvertor()
{
    DataSet ds = new DailyInfoSoapClient().GetCursOnDate(DateTime.Today);
    Dictionary<string, decimal> model = new Dictionary<string, decimal>();
    model.Add("eur", dataset_value_for_eur);
    return View(model);
}

在视图中:

@model Dictionary<string,decimal> // put this in the first line of your view

或者您可以使用其他类型的模型:

public class CurrencyViewModel {
    public decimal EUR {get;set;}
    public decimal USD {get;set;}
}

然后只需填充数据集中的值并将模型传递给视图。

在视图中:

@model the_namespace.CurrencyViewModel // put this in the first line of your view