视图中找不到命名空间,在控制器中工作
本文关键字:控制器 工作 命名空间 找不到 视图 | 更新日期: 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重新安装它们并清理我的解决方案来解决这个问题。
不知道为什么会发生这种情况,也不知道它是如何发生的,但这似乎解决了这个问题。