在视图中找不到命名空间,在控制器中工作

时间:2014-07-25 15:11:48

标签: c# asp.net-mvc asp.net-mvc-4 namespaces exchangewebservices

我正在使用Microsoft Exchange Web服务,无论出于什么原因我无法在我的视图中访问命名空间,但它在我的控制器代码中工作正常。

我的控制器代码:

using Microsoft.Exchange.WebServices.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;

namespace EWS.Web.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            var service = new ExchangeService();
            service.Credentials = new WebCredentials("username", "password");
            service.AutodiscoverUrl("username", RedirectionUrlValidationCallback);

            var userMailbox = new Mailbox("emailAddress");
            var folderId = new FolderId(WellKnownFolderName.Inbox, userMailbox);

            var itemView = new ItemView(20);   // page size
            var userItems = service.FindItems(folderId, itemView);

            return View(userItems.ToList());
        }
    }
}

我的控制器代码按预期工作,吸引了20个最新用户的电子邮件。但是,当我想在View中显示这些电子邮件时,我收到以下错误:

CS0234: The type or namespace name 'Data' does not exist in the namespace 'Microsoft.Exchange.WebServices' 

在我的观点中,我尝试添加:

@using Microsoft.Exchange.WebServices.Data

导致相同的错误。我还尝试将名称空间添加到我的Views文件夹中的Web.Config文件中:

<add namespace="Microsoft.Exchange.WebServices.Data"/>

再次,我们得到了同样的错误。

在我的控制器找到命名空间之前,我从未遇到过这个问题,但我的观点却没有。我的控制器可以找到命名空间的事实告诉我我的引用是正确的。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

看起来你的观点中有一个拼写错误:

@using Microsoft.Exchange.WebService.Data

应该是:

@using Microsoft.Exchange.WebServices.Data

此外,您表示已将命名空间添加到~/Views/web.config这似乎是正确的,只是不要忘记关闭并重新打开Visual Studio Intellisense的Razor视图以选择更改,否则它应该可以正常工作你跑了。

答案 1 :(得分:0)

我通过删除所有Microsoft.Exchange.WebServices引用并通过Nuget重新安装它们并清理我的解决方案来解决了这个问题。

不确定为什么会发生这种情况或者怎么会发生,但这似乎解决了这个问题。