我正在使用Html.BeginForm,但是我需要一个超链接来触发对ActionResult的回发(类似于LinkButton的功能)。我不认为我可以使用ActionLink,因为我没有路由到与ActionResult同名的视图(或者我误解了:S)。
任何帮助都将不胜感激。
由于
答案 0 :(得分:0)
我认为你有两个选择(虽然第一个不灵活,可能会变得混乱)
1)将提交按钮设置为超链接样式(很简单,但最终可能会使用Html.BeginAjax
或类似的东西)
2)设置div,ActionLink或其他元素的样式,并使用jQuery在回发时序列化表单数据
如果您可以更好地描述所返回的数据,我们可以更好地自定义下面的dataType
和success
参数。
$(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);
}