MVC:超链接发回ActionResult的最佳方式

时间:2011-06-01 20:17:58

标签: asp.net-mvc-3

我正在使用Html.BeginForm,但是我需要一个超链接来触发对ActionResult的回发(类似于LinkBut​​ton的功能)。我不认为我可以使用ActionLink,因为我没有路由到与ActionResult同名的视图(或者我误解了:S)。

任何帮助都将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

我认为你有两个选择(虽然第一个不灵活,可能会变得混乱)

1)将提交按钮设置为超链接样式(很简单,但最终可能会使用Html.BeginAjax或类似的东西)

2)设置div,ActionLink或其他元素的样式,并使用jQuery在回发时序列化表单数据

如果您可以更好地描述所返回的数据,我们可以更好地自定义下面的dataTypesuccess参数。

$(function () {
    $('#myButton').click(function (e) {
        e.preventDefault();
        $.ajax({
            url: '/MyController/MySuperAction',
            type: 'POST',
            data: $('#formId').serialize(),
            dataType: 'json',
            success: function (xhr_data) {
                // in this particular example, you'll
                // parse your JSON returned.
            }
        });
    });
});

修改

所以,你的控制器可能看起来像

public ActionResult MySuperAction(FormCollection form) {
    // I don't recommend using FormCollection
    // You should stick to the view model pattern

    // process your form
    return Json(new { MyValue = "Textbox value" });
}

您需要将上面的success功能修改为

success: function(xhr_data) {
    $('#MyTextBoxID').val(xhr_data.MyValue);
}