我试图使用Ajax助手将参数从视图传递给控制器,但我不知道我缺少什么,我不能让它工作!!!
这是代码:
在控制器中:
[HttpGet]
public ActionResult InsertEvent(int? id)
{
return View();
}
观点:
foreach (var item in Model)
{
<hr />
@Ajax.ActionLink(item.First_Name +" "+ item.Last_Name, null, null, new { id = item.Id },
new AjaxOptions {
HttpMethod = "GET",
OnBegin = "FillName('"+ item.First_Name+ "', '"+item.Last_Name+"')"
}, new { @class = "clickOnCostumer", @href="#"});
}
任何人都可以帮忙吗?我查看了许多教程,他们正在展示相同的解决方案..我错过了什么?
这是debugg的图片 似乎一切都很好,但它没有将值返回给控制器:
答案 0 :(得分:0)
两件事;
避免在循环内向控制器发送多个调用。这是一个主要的性能问题。 使用Jquery get方法。它简单易用。这是一个例子。
@model Models.MyList2
@{
ViewBag.Title = "Home Page";
string allIndexes = "";
if (Model.Any())
{
allIndexes = string.Join(",", Model);
}
}
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function($) {
$.get("\MyController\MyMethod", { variablename: '@allIndexes' }, function(result) {
$("#anotherinput").val(result);
});
});
</script>
答案 1 :(得分:0)
尝试设置AjaxOptions object的网址值,或者考虑ActionLink method的参数是否正确使用。
答案 2 :(得分:0)
@Ajax.ActionLink(linkText: item.First_Name +" "+ item.Last_Name,
actionName: "InsertEvent",
routeValues: new { id = item.Id },
ajaxOptions: new AjaxOptions
{
HttpMethod = "GET",
OnBegin = "FillName('"+ item.First_Name+ "', '"+item.Last_Name+"')"
},
htmlAttributes: new { @class = "clickOnCostumer", @href="#"})
明确详细说明每个参数的哪个部分可能会有所帮助。您还可能需要在ajaxOptions下添加InsertionMode。例如,在我的代码中我需要的东西,我必须进行替换,所以我必须添加,其中updateTargetId是包含我的html的div:
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "rightPanelContent"