C# 使用Ajax助手将参数从视图传递到控制器MVC
我正在尝试使用Ajax助手将参数从视图传递到控制器,但我不知道我缺少了什么,我无法让它工作 代码如下: 在控制器中:C# 使用Ajax助手将参数从视图传递到控制器MVC,c#,ajax,asp.net-mvc,C#,Ajax,Asp.net Mvc,我正在尝试使用Ajax助手将参数从视图传递到控制器,但我不知道我缺少了什么,我无法让它工作 代码如下: 在控制器中: [HttpGet] public ActionResult InsertEvent(int? id) { return View(); } 观点: foreach (var item in Model) { <hr /> @Ajax.ActionLink(item.First_Name +" "+ item
[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="#"});
}
foreach(模型中的变量项)
{
@ActionLink(item.First\u Name+“”+item.Last\u Name,null,null,new{id=item.id},
新选择{
HttpMethod=“GET”,
OnBegin=“FillName(“+item.First\u Name+”,“+item.Last\u Name+”)”
},新的{@class=“ClickOnCustomer”,@href=“#”});
}
有人能帮忙吗?我看了很多教程,它们展示了相同的解决方案。。我错过什么了吗
下面是调试程序的图片
看起来一切正常,但它不会将值返回给控制器:
[HttpGet]
public ActionResult InsertEvent(int? id)
{
return View();
}
两件事
避免向循环内的控制器发送多个调用。这是一个主要的性能问题。
使用jqueryget方法。它简单易用。这里有一个例子
@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>
@model Models.MyList2
@{
ViewBag.Title=“主页”;
字符串allIndexes=“”;
if(Model.Any())
{
allIndexes=string.Join(“,”,Model);
}
}
jQuery(文档).ready(函数($){
$.get(“\MyController\MyMethod”,{variablename:'@allIndexes'},函数(结果){
$(“#另一个输入”).val(结果);
});
});
两件事
避免向循环内的控制器发送多个调用。这是一个主要的性能问题。
使用jqueryget方法。它简单易用。这里有一个例子
@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>
@model Models.MyList2
@{
ViewBag.Title=“主页”;
字符串allIndexes=“”;
if(Model.Any())
{
allIndexes=string.Join(“,”,Model);
}
}
jQuery(文档).ready(函数($){
$.get(“\MyController\MyMethod”,{variablename:'@allIndexes'},函数(结果){
$(“#另一个输入”).val(结果);
});
});
< /代码> 尝试设置该URL值,或者考虑是否正确使用了参数。 > P>尝试设置URL值,或者考虑是否正确使用了参数。
@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"
这可能有助于明确详细说明每个参数对应的部分。此外,您可能需要在ajaxOptions下添加InsertionMode。例如,在我需要的代码中,我必须进行替换,因此我必须添加一个插件,其中updateTargetId是包含html的div:
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "rightPanelContent"
我认为您需要在@ActionLink参数中正确设置控制器和插入事件函数。它们是,我使用调试器检查它们是否设置在一起,是否正常工作。我认为我在控制器中没有得到id的值@分词定语从句说出你想做什么。您的FillName()
函数是什么。您的ClickOnStumer()
函数是什么。为什么要设置href=“#”
(它不会调用InsertEvent()
方法。既然您没有指定UpdateTargetID
ajax选项,那么您希望对这段代码做什么?这些与我的问题无关,@Stephen Muecke.the fillName()是一个在用户单击ActionLink后自动填充表单输入的函数,ClickOnStumer什么都没有。放下它。UpdateTargetId在这种情况下没有帮助。@moji,您显示的代码中没有任何内容是有意义的。您想做什么?我想您需要正确设置控制器和插入事件n在@ActionLink参数中。它们是,我使用调试器检查它们是否设置在一起,并且它们是否工作。我的想法是,我在控制器中没有得到id的值。@Partick steadmanunclar您试图做什么。您的FillName()
函数是什么。您的clickonstumer()是什么
函数。为什么要设置href=“#”
(它不会调用InsertEvent()
方法。既然你没有指定UpdateTargetID
ajax选项,你希望用这段代码做什么?这些与我的问题无关,@Stephen Muecke。fillName()是一个在用户单击ActionLink后自动填充表单输入的函数,ClickOnConstumer什么都没有。只需删除它。UpdateTargetId在这种情况下没有帮助。@moji,您显示的代码中没有任何内容是有意义的。您想做什么?向jquery添加if条件以检查@AllIndex是否为空。更改您的控件r接受逗号分隔的列表。如果需要,可以在控制器中使用IENumerable参数。但在这种情况下,您必须在jquery中构造数组。这是可以做到的。但需要更多的编码。向jquery添加If条件以检查@allIndexes是否为空。将控制器更改为接受逗号分隔的列表。如果你可以在你的控制器中有一个IENumerable参数。但是在这种情况下,你必须在jquery中构造你的数组。这是可以做到的。但是它需要更多的编码。