.Net MVC表单在服务器上失败

时间:2014-01-01 23:21:00

标签: asp.net-mvc

我创建了一个在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/

1 个答案:

答案 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? 这个答案中有几个博客的链接可以帮助你。