所以我有一个控制器,我似乎可以理解如何将参数传递给我的ActionResult方法。
routes.MapRoute(
name: "MyRoute",
url: "{controller}/{name}/{id}",
defaults: new { controller = "Project", name = "Search", id = UrlParameter.Optional }
);
这是我的路线。现在在我的控制器中我已经创建了一个方法
[HttpGet]
public ActionResult Search()
{
return View();
}
[HttpPost]
public ActionResult Search(int Id)
{
ViewBag.iD = Id;
return View();
}
在我看来
<body>
<div>
ASDF + @ViewBag.iD
</div>
</body>
如何从搜索操作中将值传递给我的iD参数?似乎无论我称之为什么
http://localhost:52992/Project/Search/id=2
或http://localhost:52992/Project/Search/1
两种方法都进入Search()方法,没有一种进入Search(int iD)。
我错过了什么?
答案 0 :(得分:2)
您视图中的链接(或带有FormMethod.Get
的表单或在地址栏中输入网址)会进行GET调用,而不是POST,因此您的方法应为
[HttpGet]
public ActionResult Search(int ID)
{
// do something based on the value of ID
ViewBag.iD = ID;
return View();
}
并删除[HttpPost]
方法。
答案 1 :(得分:0)
您必须传递HttpGet
&#39; SearchAction&#39;方法。如果你从它传递,那么只有值会在视图中显示
[HttpGet]
public ActionResult Search()
{
ViewBag.iD = your Id value here;
return View();
}
在初始加载时,将调用get方法,仅提交&#39; post&#39;方法将被呼叫 希望这有帮助。
答案 2 :(得分:0)
在你的观点
<a href='@Url.Action("ActionName", "ControllerName", new { id= 10})'>...</a>
OR
@{
int id = 10
}
<a href="/ControllerName/ActionName/@id"> ... </a>
关于你的行动
Public ActionResult Search(int id)
{
Viewbag.Id = id;
return view();
}
默认情况下,[HTTPGET]上的操作你不必提及