HTML.BeginForm始终将Post发送到索引操作

时间:2015-08-28 13:28:44

标签: asp.net-mvc sitefinity html.beginform

我试图通过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;并且调用了搜索操作。

这是路线问题吗?

2 个答案:

答案 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;使用与您的路由设置兼容的网址的操作?