Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 MVC:超链接发回ActionResult的最佳方式_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 MVC:超链接发回ActionResult的最佳方式

Asp.net mvc 3 MVC:超链接发回ActionResult的最佳方式,asp.net-mvc-3,Asp.net Mvc 3,我使用的是Html.BeginForm,但我需要一个超链接来触发对ActionResult的回发(类似于LinkButton的功能)。我认为我不能使用ActionLink,因为我没有路由到与ActionResult同名的视图(或者我误解了:S) 任何帮助都将不胜感激 谢谢我想你有两个选择(尽管第一个没有那么灵活,可能会变得一团糟) 1) 将提交按钮设置为超链接(很简单,但最终可能会使用Html.BeginAjax或类似的东西) 2) 设置div、ActionLink或其他元素的样式,并在使用jQ

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

任何帮助都将不胜感激


谢谢

我想你有两个选择(尽管第一个没有那么灵活,可能会变得一团糟)

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

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

如果您能更好地描述返回的数据,我们可以更好地自定义下面的
数据类型
成功
参数

$(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);
}

您的意思是,您希望根据表单单击的按钮更改表单的目标?或者表单是否总是发布到另一个目标?您的链接不会路由到视图,而您的控制器会这样做。您将ActionLink指向
/{controller}/MyAction
,控制器将决定渲染哪个视图。你能更具体地说明你正在使用的路由和控制器名称吗?基本上,我只需要一个超链接来表现与提交按钮相同的行为。因此…当点击超链接时,表单将发送到一个actionresult,并传递一些参数。然后,actionresult将返回一个局部视图。希望这是有意义的。好的,所以我创建了:@Html.ActionLink(“Submit”,“PostExample”,null,new{id=“exampleCssId”})。但我想将它链接到我的主控制器中的ActionResult和ActionResult方法,以路由到不同的局部视图。目前,我收到一个404错误,因为它找不到名为“PostExample”的视图。如果您在另一个控制器中发布到某个操作,则需要使用另一个重载
Html.ActionLink
,即
ActionLink(字符串linkText、字符串actionName、字符串controllerName、对象routeArguments、对象htmlAttributes)
(我想它们是按顺序排列的)谢谢您的示例。唯一需要返回的数据只是一个文本框值。难道没有一种更短更干净的方法吗?也许是
Ajax.ActionLink
或其他什么?