我创建了一个在Visual Studio中运行时运行正常的简单表单,但在我的网站上因404错误而失败。
我设置了一个动作,仅使用[HttpPost]
接收“发布”消息。
如果我更改Acton以接收“get”消息,则调用Action,但不传递表单信息。
这个网站是用.Net MVC编写的,服务器上是否有某种安全性或某些东西可能需要更改以允许“发布”呼叫?
控制器代码 -
[HttpGet]
public ActionResult Tester1()
{
return View("Tester1");
}
[HttpPost]
public ActionResult Tester2(MyModel myModel)
{
return View("Tester2", myModel);
}
Tester1.cshtml代码 -
@model FS.Models.MyModel
@using (Html.BeginForm("Tester2", "Comics", FormMethod.Post))
{
<div>
Enter Text -
@Html.TextBoxFor(m => m.property1)
</div>
<div>
<input type="submit" value="SEND!" />
</div>
}
Tester2.cshtml代码 -
@model FS.Models.MyModel
You entered - @Model.property1
Global.asax.cs代码 -
routes.MapRoute(
"Tester2Route", // Route name
"{controller}/Tester2", // URL with parameters
new { controller = "Comics", action = "Tester2" } // Parameter defaults
);
(上面的代码只是一个摘要版本,您可以在这里访问实际网站 - http://funkysmell.com/Comics/Tester1/)
答案 0 :(得分:1)
我能够让它发挥作用。
问题是您运行的服务器在URL之后需要一个斜杠(/)。因此,当我查看您的示例时,生成的URL是
<form action="/Comics/Tester2" method="post">
如果添加尾部斜杠,它将起作用。即。
<form action="/Comics/Tester2/" method="post">
点击此处获取更多信息。 Why is ASP.NET MVC ignoring my trailing slash? 这个答案中有几个博客的链接可以帮助你。