我有一个视图,需要从该视图将id_cliente
传递给Controller。
这是我的模型:
public class Cliente
{
[Key]
public int Id { get; set; }
[Display(Name = "Azienda")]
public string Nome_azienda { get; set; }
}
public class SottoCliente
{
[Key]
public int Id { get; set; }
public int Id_cliente { get; set; }
}
在我的视图中,通过单击按钮Sotto Clienti,我需要将ID_cliente
从模型SottoCliente
传递给控制器。 我不知道如何访问id_cliente
。 这是我的看法:
@model IEnumerable<GestioneAtivita.Models.Cliente>
<table class="table">
<thead>
<tr>
<th>
...
</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Nome)
</td>
<td>
@Html.DisplayFor(modelItem => item.Cognome)
</td>
<td>
@Html.DisplayFor(modelItem => item.Nome_azienda)
</td>
<td>
@Html.DisplayFor(modelItem => item.Cellulare)
</td>
<td>
//Here I have button, and here I need somthing like new { clienteId = item.`Id_cliente`} to pass Id_cliente to controller
@Html.ActionLink("Sotto Clienti", "CaricaSottoCliente", new { clienteId = item.Id}, new { @class = "btn btn-danger" })
</td>
<td>
@Html.ActionLink("Modifica", "ModificaCliente", new { id = item.Id }, new { @class = "btn btn-primary" }) |
@Html.ActionLink("Elimina", "EliminaCliente", new { id = item.Id }, new { @class = "btn btn-danger" })
</td>
</tr>
}
</tbody>
</table>
CaricaSottoCliente是我尝试从基于Id_cliente的数据库加载记录的操作:
public async Task<IActionResult> CaricaSottoCliente(int clienteId)
{
//var getsottoCliente = await _db.tboSottoClienti.FindAsync(id);
var sottoCliente = await _db.tboSottoClienti
.Where(c => c.Id_cliente == clienteId)
.FirstOrDefaultAsync();
return View(sottoCliente);
一切都很好,但是我没有得到Id_cliente,而是从Client model得到Id。
如何将Id_cliente传递给控制器?
提前谢谢!
您可以像这样创建另一个类。
public class Parent
{
public Cliente Cliente { get; set; }
public SottoCliente SottoCliente { get; set; }
}
public class Cliente
{
[Key]
public int Id { get; set; }
[Display(Name = "Azienda")]
public string Nome_azienda { get; set; }
}
public class SottoCliente
{
[Key]
public int Id { get; set; }
public int Id_cliente { get; set; }
}
并在模型中声明如下@model IEnumerable
,并相应地使用属性。
您需要创建一个同时包含类SottoCliente和Cliente的ViewModel。
public class ClientViewModel
{
public Cliente Cliente { get; set; }
public SottoCliente SottoCliente { get; set; }
}
public class Cliente
{
[Key]
public int Id { get; set; }
[Display(Name = "Azienda")]
public string Nome_azienda { get; set; }
}
public class SottoCliente
{
[Key]
public int Id { get; set; }
public int Id_cliente { get; set; }
}
在视图中访问如下字段
@model IEnumerable<GestioneAtivita.Models.ClientViewModel>
<table class="table">
<thead>
<tr>
<th>
...
</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Cliente.Nome)
</td>
<td>
@Html.DisplayFor(modelItem => item.Cliente.Cognome)
</td>
<td>
@Html.DisplayFor(modelItem => item.Cliente.Nome_azienda)
</td>
<td>
@Html.DisplayFor(modelItem => item.Cliente.Cellulare)
</td>
<td>
//Here I have button, and here I need somthing like new { clienteId = item.`Id_cliente`} to pass Id_cliente to controller
@Html.ActionLink("Sotto Clienti", "CaricaSottoCliente", new { clienteId = item.SottoCliente.Id}, new { @class = "btn btn-danger" })
</td>
<td>
@Html.ActionLink("Modifica", "ModificaCliente", new { id = item.Cliente.Id }, new { @class = "btn btn-primary" }) |
@Html.ActionLink("Elimina", "EliminaCliente", new { id = item.Cliente.Id }, new { @class = "btn btn-danger" })
</td>
</tr>
}
</tbody>
</table>