使用Ajax helper将参数从View传递到Controller MVC

时间:2015-11-15 23:22:28

标签: 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.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的图片 似乎一切都很好,但它没有将值返回给控制器:

enter image description here

3 个答案:

答案 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。例如,在我的代码中我需要的东西,我必须进行替换,所以我必须添加,其中up​​dateTargetId是包含我的html的div:

                 InsertionMode = InsertionMode.Replace,
                 UpdateTargetId = "rightPanelContent"