在ActionLink上保留数据单击MVC3

时间:2012-01-23 13:20:53

标签: c# asp.net asp.net-mvc asp.net-mvc-3

点击时,我正在使用@Html.ActionLink("Home", "Home")当前传回“主页”。但是,当单击操作链接时,是否可以让页面自己执行帖子(即在控制器中点击其后事件)。

我基本上需要一种导航到页面的方法,但首先要将所有当前页面数据提交到模型中。

注意:忘记添加ActionLink位于页面上的partialView内

3 个答案:

答案 0 :(得分:2)

您可以使用AjaxHelper方法ActionLink()提交当前页面的POST。然后,对于控制器中的HttpPost操作方法,只需重定向到Home

这样的事情:

您的观点

@Ajax.ActionLink("Click me", "SubmitMe", "Current", new AjaxOptions() { HttpMethod = "Post" })

您的控制器

public class CurrentController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult SubmitMe(SomeModel someModel)
    {
        // do what you have to do here
        return RedirectToAction("Home", "Home");
    }
}

答案 1 :(得分:1)

您可以使用javascript(我建议使用jQuery)提交表单并在之后重定向。 您还可以提交表单并在RedirectToAction()装饰的Action方法中使用[HttpPost]

jQuery示例

$(function() {
    $("#YourButton").click(function(e) {
       e.preventDefault();
       $.post("YourUrlToPostTo", $("#yourForm").serialize(), function() {
         // success, redirect now
       });
     });
});

答案 2 :(得分:0)

您无法以这种方式使用操作链接。你可以做的是使用jQuery创建JSON对象或字符串化表单的内容,然后通过设置方法调用.ajax()方法。

您的jQuery代码可能如下所示:

$('#yourActionLink').click(function(e) {
    e.preventDefault();

    var yourValues = $("form").serialize();
    $.post($(this).attr("href"), yourValues, function() {
        alert("Data saved.");
    });
});

这应该是那样的。