2015-11-15 47 views
1

Iam尝试使用Ajax帮助器将视图参数传递给控制器​​,但我不知道我错过了什么,我无法让它工作!使用Ajax帮手将参数从视图传递给控制器​​MVC

这里是代码:

在控制器:

[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 的PIC似乎一切都很好,但它不是价值回归到控制器:

enter image description here

+0

我认为你需要正确设置控制器和InsertAvent函数在@Act​​ionLink参数中。 –

+0

他们是,我用调试器来检查他们是否在一起,他们正在工作。认为是在控制器中没有得到id的价值.. @Partick Steadman – moji

+0

不清楚你想做什么。什么是你的'FillName()'函数。你的'clickOnCostumer()'函数是什么?为什么你要设置'href =“#”'(它不会调用'InsertEvent()'方法。而且由于你没有指定'UpdateTargetID'的ajax选项,你对这个代码有什么期待? –

回答

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> 
+0

你可以格式化你代码请:) – moji

+0

我想..它比编码似乎更难.. –

+0

@Stephen Muecke感谢编辑。 –

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是div封闭我的html:

    InsertionMode = InsertionMode.Replace, 
       UpdateTargetId = "rightPanelContent" 
相关问题