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

本文关键字:控制器 工作 命名空间 找不到 视图 | 更新日期: 2023-09-27 18:14:44

我正在使用Microsoft Exchange Web Services,由于某种原因我无法访问视图中的命名空间,但它在我的控制器代码中工作得很好。

控制器代码:

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个最新的用户电子邮件。然而,当我想在视图中显示这些电子邮件时,我得到以下错误:

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

在我看来,我试着添加:

@using Microsoft.Exchange.WebServices.Data

会导致相同的错误。我还尝试过将名称空间添加到Web中。配置文件在我的视图文件夹:

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

,再次得到相同的错误

我从来没有遇到过这个问题之前,我的控制器可以找到一个命名空间,但我的视图不能。控制器可以找到命名空间的事实告诉我,我的引用是正确的。

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

看起来你的视图中有一个错别字:

@using Microsoft.Exchange.WebService.Data

应该是:

@using Microsoft.Exchange.WebServices.Data

您还指出,您已经添加了名称空间到您的~/Views/web.config,这似乎是正确的,只是不要忘记关闭并重新打开您的Razor视图,以便Visual Studio Intellisense选择更改,否则如果您运行它应该可以正常工作。

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

不知道为什么会发生这种情况,也不知道它是如何发生的,但这似乎解决了这个问题。