2015-11-15 85 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" 
相關問題