Asp.net mvc 使用Html.ActionLink提交表单在Ajax表单中提交

Asp.net mvc 使用Html.ActionLink提交表单在Ajax表单中提交,asp.net-mvc,razor,asp.net-ajax,Asp.net Mvc,Razor,Asp.net Ajax,我有一个AJAX.BeginForm,我想提交一篇Html文章作为最后一篇文章。这是我的表格 @using (Ajax.BeginForm("createSet", "Workout", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "divs", HttpMethod = "POST"}, new { id = "myForm" })) { <div id="divs">

我有一个AJAX.BeginForm,我想提交一篇Html文章作为最后一篇文章。这是我的表格

@using (Ajax.BeginForm("createSet", "Workout", 
new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "divs", 
HttpMethod = "POST"}, new { id = "myForm" }))
{
    <div id="divs">
        @Html.Partial("WorkoutSet", Session["WorkoutSetList"])
    </div>

    @Html.ActionLink("Submit", "SavePlan", "Workout", new { type = "submit" });
    //<input type="submit" value="Submit" id="submit" name="command" />
    <input type="submit" value="Create Set" name="command" />

}
基本上,我的createset按钮经常用于ajax调用,效果很好。我能够绑定从局部视图呈现的模型,并在每次ajax调用时将模型更新到会话

最后一步,我想将整个表单连同模型值一起提交到SavePlan操作,然后重定向到主页

面临的问题:

首先,我尝试了Ajax提交按钮。代码被注释掉后,一个脚本将其重定向到保存计划以及从partialview呈现的模型值。唯一的问题是我不能重定向到主页,我已经读到重定向不能在ajax调用上完成

其次,我尝试了@Html.ActionLink,它确实会转到SavePlan操作,然后继续重定向到主页,但从未传递模型值。我尝试了FormCollection,但也没有传递值

请就如何解决这个问题提供一些建议?我已经花了两天的时间在这上面了,我都快哭了

重述:

尝试Ajax方式允许我传递模型值,但不会重定向到主页 尝试Html方式不允许我传递模型值,但会重定向到主页。
您可以从ajax POST重定向-在控制器中,您需要返回window.location javascript代码段:

return JavaScript(string.format("window.location = '{0}'", Url.Action("Index")));

这里有一篇文章:

当您要执行重定向时,为什么要执行ajax回发?您的控制器方法createSet和SavePlan之间有什么区别?更好的方法是使用标准的Html.BeginForm和SavePlan的提交按钮,然后处理使用ajax更新DOM的创建集按钮的单击事件。@Venkat:因为我的模型与ajax表单绑定。我希望在执行该操作之前,确保最后一次保存对表单所做的任何更改redirection@StephenMueckecreateSet添加新的集合行。保存计划将计划保存到数据库,然后重定向。我执行ajax调用,传递模型值,返回新行并更新对模型的任何更改。使用html表单,我不确定在执行ajax调用时是否可以绑定模型。是的,您可以使用ajax绑定到您的模型,实际上您正在使用@html.BeginForm进行绑定,尽管我真的不明白您想要实现什么。如果您想动态添加行,可以使用jquery来实现,而不需要对控制器进行任何ajax调用:这看起来很有希望。我要试试,让你知道。嗯,我不知道如何编辑我以前的评论。但是你的回答对我有用!!。非常感谢,卡尔。虽然我不得不在url中添加一个控制器,而且是字符串语法。只为那些可能遇到这个问题的人准备。再次感谢。