Asp.net mvc 4 asp.net mvc我的表单操作为空

Asp.net mvc 4 asp.net mvc我的表单操作为空,asp.net-mvc-4,Asp.net Mvc 4,我已将我的routeconfig定义为: routes.MapRoute( "addcomments", "addcomments/{urlLanguage}", new { controller = "Home", action = "addcomments", urlLanguage = "h" } ); 在Homecontroller中: public ActionResult addcomments(string url

我已将我的routeconfig定义为:

 routes.MapRoute(
       "addcomments",
       "addcomments/{urlLanguage}",
       new { controller = "Home", action = "addcomments", urlLanguage = "h" }
     );      
在Homecontroller中:

public ActionResult addcomments(string urlLanguage)
{
    return View();
}

[AcceptVerbs(HttpVerbs.Post)]
public string addcommentssave(int id, string yourName, string youremail, string website, string yourComment)
{
    string message = " Thanks for sharing your comment! If your comment doesn't appear right away, please be patient as it may take a few minutes to publish or may require moderation.";
    DateTime WishDateTime = DateTime.UtcNow;
    string szRemoteAddr = System.Web.HttpContext.Current.Request.UserHostAddress;

    Comments commit = new Comments();

    commit.comdate = WishDateTime;
    commit.comments = yourComment;
    commit.email = youremail;
    commit.Name = yourName;
    commit.Website = website;
    commit.IpAddress = szRemoteAddr;
    commit.PostId = id;
    commit.IsVisible = 0;

    _session.Comment.Add(commit);
    _session.SaveChanges();


    //ViewBag.result= "<div class='message success'>" + message + "</div>";
    // return View();
    return "<div class='message success'>" + message + "</div>";


}
但是当我运行它的时候,我的表单动作变成空的,就像

form action=""  ....`


我创建了一个简单的测试站点,尝试看看是否可以复制您的问题

这是我的路线配置:

namespace Comments
{
    // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
    // visit http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
        }

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

        }

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            // Use LocalDB for Entity Framework by default
            Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);
        }
    }
}
这是我的HomeController.cs:

namespace Comments.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            return RedirectToAction("AddComment");
        }

        [HttpGet]
        public ActionResult AddComment()
        {
            return View();
        }

        [HttpPost]
        public ActionResult AddComment(int id, string yourName, string youremail, string website, string yourComment)
        {
            return Content(String.Format("Got a comment, id = {0}, yourName = {1}, youremail = {2}, website = {3}, yourComment = {4}",
                id,
                yourName,
                youremail,
                website,
                yourComment));
        }

    }
}
以下是我的AddComment.cshtml:

@{
    ViewBag.Title = "Add Comment";
}

<h2>Add Comment</h2>

@using (Ajax.BeginForm("AddComment", "Home", null, new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "commentmessage", OnBegin = "wait()", OnSuccess = "success()", LoadingElementId = "updating" }, new { id = "_commitForm" }))
{
    <b>Form Here</b>
}
@{
ViewBag.Title=“添加注释”;
}
添加注释
@使用(Ajax.BeginForm(“AddComment”,“Home”,null,新的AjaxOptions{HttpMethod=“POST”,UpdateTargetId=“commentmessage”,OnBegin=“wait()”,OnSuccess=“success()”,LoadingElementId=“update”},新的{id=“\u commitForm”}))
{
从这里开始
}
以下是视图来源:

<DOCTYPE html>
<html>
<head>
    <title>Add Comment</title>
    <link href="/Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="/Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
</head>

<body>

<h2>Add Comment</h2>

<form action="/Home/AddComment" data-ajax="true" data-ajax-begin="wait()" data-ajax-loading="#updating" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-success="success()" data-ajax-update="#commentmessage" id="_commitForm" method="post">   <b>Form Here</b>
</form>
</body>
</html>

添加注释
添加注释
从这里开始

因此,您可以看到表单路径渲染。尝试简化您的路由配置(我没有做任何特殊操作)。

将null替换为
actioname
您可以添加HomeController.cs代码吗?您的预定路线与BeginForm呼叫不匹配。好的-从您的代码中,我想我知道您要做什么。将尝试创建一个示例。谢谢paul,您根据我在途中更改的示例代码解决了我的问题,并且成功了,非常感谢,非常感谢
<DOCTYPE html>
<html>
<head>
    <title>Add Comment</title>
    <link href="/Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="/Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
</head>

<body>

<h2>Add Comment</h2>

<form action="/Home/AddComment" data-ajax="true" data-ajax-begin="wait()" data-ajax-loading="#updating" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-success="success()" data-ajax-update="#commentmessage" id="_commitForm" method="post">   <b>Form Here</b>
</form>
</body>
</html>