我以数据集
的形式从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)?
答案 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