c# MVC获取表单数据作为URL参数
本文关键字:URL 参数 数据 MVC 获取 表单 | 更新日期: 2023-09-27 18:06:57
我有一个控制器,从提交的表单接受3个值,这工作得很好。
我现在需要做的是使生成的链接能够将相同的数据发布到控制器。
控制器看起来像这样:
[HttpPost]
public ActionResult Customer(string lastName, string postCode, string quoteRef)
{
// Using passed parameters here
}
我知道路由允许更漂亮的URL,但在这种情况下,我需要表单能够通过提交的表单或以下超链接格式接受这三个值:
path.to.url/Home/Customer?lastName={1}&postcode={2}"eRef={3}
我已经研究过路由,但是我找不到任何能让我达到这个结果的东西。
我的路由当前设置如下:
routes.MapRoute(
"Customer",
"{controller}/{action}/{id}/{lastName}/{postCode}/{quoteRef}",
new {controller = "Home", action = "Customer", id = ""}
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
只需将表单动作方法设置为使用GET
而不是POST作为查询字符串发送参数
@using (Html.BeginForm("Customer", "Controller", FormMethod.Get
用HttpGet
装饰动作方法
[HttpGet]
public ActionResult Customer(string lastName, string postCode, string quoteRef)
{
}
path.to.url/Home/Customer?lastName={1}&postcode={2}"eRef={3}
这只适用于[HttpGet]
属性,不适用[HttpPost]
[HttpGet]
public ActionResult Customer(string lastName, string postCode, string quoteRef)
{
// Using passed parameters here
}
如果你仍然想使用[HttpPost]
,你应该在GET
和POST
方法之间做一点区别,就像这里一样-你不能让这些方法具有相同的参数。
URL: path.to.url/Home/Customer?lastName={1}&postcode={2}"eRef={3}&method={4}
[HttpGet]
public ActionResult Customer(string lastName, string postCode, string quoteRef, string method)
{ .. }