我试图通过html beginForm发布表单,但调用的方法始终是[httpPost]索引,而不是帖子(搜索)中指定的方法。
我可能做错了什么?
这是我的表格:
@using (Html.BeginForm("Search", "MyController", FormMethod.Post))
{
<p>
Postal Code: @Html.TextBoxFor(m => m.PostalCode) <br />
City: @Html.TextBoxFor(m => m.PostalCodeCity ) <br />
Address: @Html.TextBoxFor(m => m.Address) <br />
<input type="submit" value="submit" />
</p>
}
我的模特:
public class MyModel
{
public string PostalCode { get; set; }
public string PostalCodeCity { get; set; }
public string Address { get; set; }
}
我的路线:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Ignore("{resource}.axd/{*pathInfo}");
//Routing for ASP.NET MVC Controllers
routes.MapRoute(
name: "ControllersRoute",
url: "mvc/{controller}/{action}/{id}",
defaults: new { id = UrlParameter.Optional });
//Routing for Web Api Controller
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
我的控制器方法
public class MyController : Controller
{
/// <summary>
/// Gets or sets the message.
/// </summary>
[Category("String Properties")]
public string Message { get; set; }
/// <summary>
/// This is the default Action.
/// </summary>
public ActionResult Index()
{
MyModel model = new MyModel();
return View("Default", model);
}
[HttpPost]
public ActionResult Index(MyModel model)
{
//Refresh model attending session variables
return View("Default", model);
}
[HttpPost]
public ActionResult Search(MyModel model)
{
//model work
return View("Default", model);
}
}
更新
@markpsmith建议我检查表单操作,这是错误的。 这是行动=&#34;订单日历&#34;比我更改为action =&#34; order-calendar / search&#34;并且调用了搜索操作。
这是路线问题吗?
答案 0 :(得分:2)
我看到你标记了Sitefinity,如果是这样你应该尝试:
@using Telerik.Sitefinity.UI.MVC; @using Telerik.Sitefinity.Frontend.Mvc.Helpers
@using(Html.BeginFormSitefinity()){}
答案 1 :(得分:0)
BeginForm助手使用路由引擎到达&#34;搜索&#34;控制器的动作。该帮助程序在RouteTable类中使用名为GetVirtualPath()的方法(类似于 RouteTable.Route.GetVirtualPath())。 如果您使用相同的页面进行后期操作,则只需使用
即可@using (Html.BeginForm())
没有任何参数。你能到达&#34;搜索&#34;使用与您的路由设置兼容的网址的操作?