C# 类型或命名空间名称';HttpGet';添加时找不到';Http';名称空间
我在MVC中有一个问题 目前我在MVC工作,版本是MVC4。我有两个ActionResult方法,见下文C# 类型或命名空间名称';HttpGet';添加时找不到';Http';名称空间,c#,asp.net-mvc,http-post,http-get,C#,Asp.net Mvc,Http Post,Http Get,我在MVC中有一个问题 目前我在MVC工作,版本是MVC4。我有两个ActionResult方法,见下文 [HttpGet] public ActionResult About() { ViewBag.Message = "Your app description page."; return View(); } [HttpPost] public ActionResult About(ModelName
[HttpGet]
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
return View();
}
[HttpPost]
public ActionResult About(ModelName ccc)
{
ViewBag.Message = "Your app description page.";
return View();
}
我们需要使用System.Web.Mvc[HttpPost]和[HttpGet]属性的代码>命名空间。因此,我使用System.Web.Mvc添加了代码>我的控制器中的命名空间。但是我需要使用System.Web.Http添加另一个名称空间
for httpsresponseexpection error handling in my controller.Si我在命名空间中添加了。此时System.Web.Mvc代码>不工作
我遇到此错误:找不到类型或命名空间名称“HttpGet”。为什么?对于HttpGet,System.Web.Mvc和System.Web.Http之间有什么关系吗
出现此异常的原因是,在两个不同的命名空间中有两个不同的HttpGetAttribute
类:
第一个用于ASP.NET MVC控制器,第二个用于ASP.NET Web API控制器
当您导入第二个名称空间时,编译器不再能够消除您引用的两个类中的哪个类的歧义,因为这两个名称空间都在范围内
基本上,Microsoft复制了ASP.NET MVC中存在的所有Web API类,但将它们放在不同的命名空间中。基本上,您不应该混合使用这些名称空间
但是我需要使用System.Web.Http添加另一个名称空间;对于
httpsresponseexpection错误处理在我的控制器中
为什么需要在ASP.NET MVC控制器中使用此选项?通常,这是您应该在Web API控制器中执行的操作
但是,如果出于某种原因需要混合使用2,则必须通过完全限定属性来明确指定需要使用的属性:
[System.Web.Mvc.HttpGet]
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
return View();
}
我在使用.NETCore的OSX上遇到了这个问题。我在我的project.json
中缺少一个Microsoft.AspNetCore.Mvc
条目
之前:
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
...,
"Microsoft.Extensions.Configuration.CommandLine": "1.0.0"
},
...
}
之后:
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
...,
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.Extensions.Configuration.CommandLine": "1.0.0"
},
...
}
作为记录,我在一个类库中遇到了一个类似的问题,涉及到MVC。我在类库中安装了一个nuget包,它本身依赖于MVC(注意:新包是:RazorGenerator.MVC)。以前,类库依赖于使用“添加引用”对话框添加的System.Web.Mvc.dll引用,而不是通过“Microsoft.AspNet.Mvc”nuget包安装的引用
Nuget选择了最低的MVC版本,以满足新包的依赖性要求。这意味着以前的参考(MVC5)被较低版本的参考(MVC3)所取代
使用nuget升级类库中的MVC版本解决了该问题。以下是该问题的解决方案,请尝试
[System.Web.Mvc.HttpGet]
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
return View();
}
也许你的问题与此有关:好吧!但是他们有dll问题,但我没有dll问题,所有的都工作得很好,但是如果我添加System.Web.Http命名空间,那么HttpGet属性就不工作了!。请再看一次我的问题!!谢谢你的解决方案。这也解决了我的问题。我的投票+1我可能知道你删除了MVC引用,或者你使用了path的两个引用?有时我想换工作或者自杀,或者类似的东西来向微软表达我的抗议。无论如何……谢谢你。答案不仅应该包含代码,还应该解释为什么这个代码解决了原来的问题。请编辑您的答案并添加解释。