Gij*_*ijs 44 asp.net-mvc asp.net-mvc-partialview
我想在我的mvc项目的每个视图页面上放一个随机图像.所以我创建了一个方法,它返回一个partialView并在共享的Layout页面中调用该方法.
当我尝试使用正确的用户名和密码登录时,此工作正常.使用的是插入的,每个页面都包含一个随机图像.但是当我给出用户名和密码的无效组合时.共享布局页面找不到我想用我调用的控制器,@Html.Action并且实际上应该返回登录视图,并带有错误消息"用户名和密码的无效组合"和当前的随机图像.
的InnerException:
{"在控制器'Project.WebUI.Controllers.HomeController'上找不到公共操作方法'RandomSponsor'."}
我在共享布局中的Html.Action.
@Html.Action("RandomSponsor", "Home")
Run Code Online (Sandbox Code Playgroud)
家庭控制器中的方法.
[HttpGet]
[ChildActionOnly]
public ActionResult RandomSponsor()
{
var model = service.getRandomSponsor();
return PartialView("RandomSponsor", model);
}
Run Code Online (Sandbox Code Playgroud)
getRandomSponsor方法工作正常,这个方法总是返回一个随机字符串值,返回到RandomSponsor.cshtml视图.
RandomSponsor.schtml(仅包含图像字符串)
<img src="~/Content/Images/Advert/@(Model)" alt="a" />
Run Code Online (Sandbox Code Playgroud)
我在网上搜索了这个问题,但没有找到解决方案,有没有人知道这个问题的答案?HttpGet的HttpGet可能会有什么问题吗?
问候.
Cla*_*edi 77
如果执行请求是a POST,那么它将尝试找到RandomSponsor接受的方法HttpPost.如果这是有道理的,你可以删除HttpGet,这应该做的伎俩.
Mau*_*rez 12
如果您有多个以POST开头的调用层(我有一个操作返回一个返回调用RenderAction的部分视图的视图),也会发生这种情况,然后对RenderAction的调用仍将查找POST方法
非常类似于我在这里遇到的这个问题 - 如何在控制器'controllerNameController'上找不到"公共操作方法'methodActionName'"
如果你想继续接受HTTP GET动词并修复级联后请求到get请求的问题,请将此添加到您的方法中
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
请记住[HttpGet]与[AcceptVerbs(HttpVerbs.Get)]相同
如果请求是 aPOST但控制器方法被注释,则会发生这种情况[HttpGet]。例如,您可能会发出一个POST返回包含部分视图的视图的视图,该视图@Html.Action使用用 注释的控制器方法[HttpGet]。如果原始请求是POST,则随后调用的所有控制器方法都需要支持POST.
要修复它,您可以使用该AcceptVerbs属性来指定您的控制器方法同时接受POST和GET:
[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60351 次 |
| 最近记录: |