2013-10-14 15 views
6

Ich habe eine ASP.NET MVC 4-Anwendung. In meiner Anwendung gibt es eine Rasiereransicht, die mit List-Typ als Modell funktioniert.ASP.NET MVC 4 übergeben Objektvariable über ActionLink

@model List<MeetingLog.Models.UserModel> 

@{ 
    Layout = null; 
} 
. 
. 
. 

Ich Iterieren durch Modellvariable wie folgt aus:

@foreach (var item in Model) 
       { 
        <tr> 
         <td> 
          @item.Name 
         </td> 
         <td> 
          @item.Surname 
         </td> 
         <td> 
          @Html.ActionLink("Click", "SavePerson", "Meeting", new {model = item, type = "coordinator"}, null) 
          @Html.ActionLink("Click", "SavePerson", "Meeting", new {model = item, type = "participant"}, null) 
         </td> 
        </tr> 
       } 

Ich brauche zwei Variablen SavePerson Aktion mit der Aktion Links passieren. Die erste ist das aktuelle UserModel, und die zweite ist die String-Variable type. Aber in meiner Aktion kommt der erste Parameter als null durch. Aber der Parameter string ist korrekt. Wie kann ich das erreichen?

Antwort

4

I

$('.btnSave').on('click', function(){ 
    $.ajax({ 
     url: '@(Url.Action("SavePerson", "Meeting"))', 
     type: 'post', 
     data: { 
      Value1: 'Value1', 
      Value2: 'Value2' 
     }, 
     success: function (result) { 
      alert('Save Successful'); 
     } 
    }); 
}); 

für diese Ajax-Aufrufe verwenden und den Anruf in eine Schaltfläche klicken setzen oder auf einen Link klicken, wenn Sie mit href wollen = # hoffentlich hilft .

4

Sie können keine komplexen Instanzen über Querystring übergeben. Dies ist der Weg, es zu benutzen:

@Html.ActionLink("Click", "SavePerson", "Meeting", new {x = item.x, y = item.y, ..., type = "participant"}, null) 
+0

Aber das funktioniert: @ Html.ActionLink ("Click", "SavePerson", "Meeting", Artikel, null). Mit diesem Format wird das Element korrekt angezeigt, aber ich kann den zweiten Parameter nicht übergeben. –

1

Sie können tatsächlich, es ist nur ein wenig seltsam, wenn Sie die übergebenen Werte codieren (neu {}) , was Sie tun müssen, ist es als ein neues Objekt übergeben, die Sie aufbauen, so endet es bis Wesen:

@Html.ActionLink("Link Name", "LinkActionTarget", new Object{model = item, type ='Coordinator'} 

Wo Objekt der Name des Objekts ist, und das Modell und Typ sind Attribute dieses Objekts