我正在传递给我的Razor观点:
public ActionResult NewsList()
{
ViewBag.News = _client.GetNews(Guid.Parse(GetCookieInfo.TokenId));
return View();
}
我的GetNews是这样的:
public IEnumerable<TokenNews> GetNews(Guid tokenid)
{
var nl = from news in entities.News
where news.TokenId == tokenid &&
DateTime.Now > news.Expiration &&
news.IsActive
orderby news.OrderNumber
select new News
{
NewsTitle = news.NewsTitle,
NewsBody = news.NewsBody,
OrderNumber = news.OrderNumber
};
var newslist = new List<TokenNews>();
foreach (var news in nl)
{
var nw = new TokenNews();
nw.Body = news.NewsBody;
nw.Title = news.NewsTitle;
newslist.Add(nw);
}
return newslist;
}
我的TokenNews是这样的:
[DataContract]
public class TokenNews
{
private string title = string.Empty;
private string body = string.Empty;
public string Title {
get { return title; }
set { title = value; }
}
public string Body
{
get { return body; }
set { body = value; }
}
}
我的NewsList.cshtml视图如下所示:
@using SuburbanCustPortal.SuburbanService
<br />
@foreach (var nws in (IEnumerable<TokenNews>) ViewBag.News)
{
<div class="leftdiv">
<br/>
<label class="sizedCustomerlabel">
@nws.Body
</label>
</div>
}
我的问题是@nws.Body
。 nws没有给我TokenNews中的标题或正文。
它给我的信息是:
无法解析符号正文。
这一定是我忽略了一百次,但我无法理解。
有什么建议吗?
更新
回应Umar Farooq Khawaja:
我按照你的表现做了,这就是发生的事情:
答案 0 :(得分:1)
您需要将DataMember
属性应用于公共属性的TokenNews
课程。请记住为之后使用SuburbanCustPortal.SuburbanService
类的TokenNews
服务重新生成客户端。我还使用自动生成的属性而不是私有字段支持的属性,只是为了使代码更清晰。
[DataContract]
public class TokenNews
{
[DataMember]
public string Title
{
get;
set;
}
[DataMember]
public string Body
{
get;
set;
}
}
如果这不起作用,请先尝试将ViewBag.News
存储在静态类型变量中,然后使用新的静态类型引用对其进行迭代,例如
<br />
@{
var news = (IEnumerable<TokenNews>)ViewBag.News;
}
@foreach (var item in news)
{
<div class="leftdiv">
<br />
<label class="sizedCustomerLabel">
@item.Body
</label>
</div>
}
此外,您可以通过以下方式重构以下方法:
public IEnumerable<TokenNews> GetNews(Guid tokenid)
{
var newslist = from news in entities.News
where news.TokenId == tokenid &&
DateTime.Now > news.Expiration &&
news.IsActive
orderby news.OrderNumber
select new TokenNews
{
Title = news.NewsTitle,
Body = news.NewsBody
};
return newslist.ToArray();
}