ASP.NET MVC 4 Pasando variable de objeto a través de ActionLink
asp.net-mvc-4 razor (3)
No puede pasar instancias de tipos complejos a través de querystring. Esta es la forma de usarlo:
@Html.ActionLink("Click", "SavePerson", "Meeting", new {x = item.x, y = item.y, ..., type = "participant"}, null)
Tengo una aplicación ASP.NET MVC 4. Hay una vista de maquinilla de afeitar en mi aplicación que funciona con el tipo de lista como modelo.
@model List<MeetingLog.Models.UserModel>
@{
Layout = null;
}
.
.
.
Estoy iterando a través de la variable de modelo de esta manera:
@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>
}
Necesito pasar dos variables a la acción SavePerson con enlaces de acción. El primero es UserModel actual, y el segundo es una variable de cadena llamada type. Pero en mi acción el primer parámetro aparece como nulo. Pero el parámetro de cadena viene correctamente. ¿Cómo puedo conseguir esto?
Yo uso las llamadas ajax para esto
$(''.btnSave'').on(''click'', function(){
$.ajax({
url: ''@(Url.Action("SavePerson", "Meeting"))'',
type: ''post'',
data: {
Value1: ''Value1'',
Value2: ''Value2''
},
success: function (result) {
alert(''Save Successful'');
}
});
});
y ponga la llamada en un clic del botón o haga clic en un enlace si lo desea con href = # con suerte, esto ayuda.
En realidad puedes, es un poco raro, cuando estás codificando los valores pasados (new {}) lo que tienes que hacer es pasarlo como un nuevo objeto que estás construyendo para que termine siendo:
@Html.ActionLink("Link Name", "LinkActionTarget", new Object{model = item, type =''Coordinator''}
Donde Object es el nombre de su objeto, y el modelo y el tipo son atributos de ese objeto