我在MVC中有一个问题。
目前我正在使用MVC,版本是MVC4。我有两个ActionResult方法,如下所示
[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();
}
我们需要HttpPost和HttpGet属性的using System.Web.Mvc;
名称空间。因此,我在控制器中添加了using System.Web.Mvc;
名称空间。但是我需要在我的控制器.Si中添加另一个名称空间using System.Web.Http;
,用于httpsresponseexpection错误处理。此时,System.Web.Mvc;
不起作用。
我收到此错误:找不到类型或命名空间名称'HttpGet‘。为什么?System.Web.Mvc和HttpGet的System.Web.Http之间有什么关系?
发布于 2013-10-11 14:14:28
出现此异常的原因是因为在两个不同的命名空间中有两个不同的HttpGetAttribute
类:
第一个用在ASP.NET MVC控制器中,第二个用在ASP.NET Web API控制器中。
当您导入第二个名称空间时,编译器不再能够消除您引用的两个类中的哪一个的歧义,因为这两个名称空间在作用域中。
基本上,微软复制了Web的ASP.NET MVC中存在的所有类,但将它们放在不同的名称空间中。基本上,您不应该混合使用这些名称空间。
,但我需要使用System.Web.Http;添加另一个名称空间,以便在控制器中进行httpsresponseexpection错误处理
为什么需要在ASP.NET MVC控制器中使用它?通常,这是您应该在Web API控制器中执行的操作。
但是,如果出于某种原因,您需要混合使用这两个属性,则必须通过完全限定来显式指定您需要使用的属性:
[System.Web.Mvc.HttpGet]
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
return View();
}
发布于 2017-01-28 03:11:03
需要说明的是,我在引用MVC的类库中遇到了类似的问题。我在类库中安装了一个nuget包,它本身依赖于MVC (注意:新的包是: RazorGenerator.Mvc)。以前,类库依赖于使用“Add reference”对话框添加的System.Web.Mvc.dll引用,而不是通过"Microsoft.AspNet.Mvc“nuget包安装的引用。
Nuget选择了最低的MVC版本,以满足新包的依赖要求。这意味着以前的引用(对MVC5)被替换为较低版本的引用(对MVC3)。
使用nuget升级类库中的MVC版本解决了此问题。
发布于 2017-11-28 17:17:15
以下是该问题的解决方案,请尝试……
[System.Web.Mvc.HttpGet]
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
return View();
}
https://stackoverflow.com/questions/19311044
复制相似问题