Asp.net mvc 3 MVC:超链接发回ActionResult的最佳方式
我使用的是Html.BeginForm,但我需要一个超链接来触发对ActionResult的回发(类似于LinkButton的功能)。我认为我不能使用ActionLink,因为我没有路由到与ActionResult同名的视图(或者我误解了:S) 任何帮助都将不胜感激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
谢谢我想你有两个选择(尽管第一个没有那么灵活,可能会变得一团糟) 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
或其他什么?