Allora Marco intanto grazie per l' aiuto che potrai darmi.
ho 2 errori che non riesco a capire il perchè in locale, sia usando la console che IIS express funzionano invece dopo averlo pubblicato non funziona più intanto pongo il primo:
in una lista di dipendenti ho la maschera in pop up modal per fare le modifiche la view della maschera principale è :
@model PaginatedList<Cedolini.Models.Utente>
@{
ViewBag.Title = "Gestione Utenti";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2 style="text-align:center"> <strong>Elecno Utenti</strong></h2>
<form asp-action="GestioneUtenti" method="get">
<div class="form-actions no-color">
<p>
Cerca: <input type="text" name="SearchString" value="@ViewData["CurrentFilter"]" />
<a class="btn btn-primary btn-small" asp-action="GestioneUtenti">Annulla Ricerca</a>
</p>
</div>
</form>
<table class="table">
<thead>
<tr>
<th>
<a asp-action="GestioneUtenti" asp-route-sortOrder="@ViewData["CognomeSortParm"]" asp-route-currentFilter="@ViewData["CurrentFilter"]">Cognome</a>
</th>
<th>
Nome
</th>
<th>
Codice Fiscale
</th>
<th>
Password
</th>
@{if (Context.User.IsInRole("1"))
{
<th>
<a onclick="showInPopup('@Url.Action("UtenteModifica", "Admin",new { Id = 0 }, Context.Request.Scheme)','Crea Nuovo Utente')"
class="btn btn-success text-white"><i class="fa fa-user fa-fw"></i>Crea Nuovo Utente</a>
</th>
}
}
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Cognome)
</td>
<td>
@Html.DisplayFor(modelItem => item.Nome)
</td>
<td>
@Html.DisplayFor(modelItem => item.CodiceFiscale)
</td>
<td>
@Html.DisplayFor(modelItem => item.Password)
</td>
<td>
<a class="btn btn-primary" asp-controller="Publi" asp-action="DocumentiDipendenti" asp-route-id="@item.Id">Visualizza Cedolini</a>
<a onclick="showInPopup('@Url.Action("UtenteModifica", "Admin", new { id = item.Id }, Context.Request.Scheme)')"
class="btn btn-info text-white"><i class="fas fa-pencil-alt"></i> Modifica</a>
@{if (Context.User.IsInRole("1"))
{
<form asp-action="DeleteUtente" asp-route-id="@item.Id" onsubmit="return jQueryAjaxDelete(this)" class="d-inline">
<input type="hidden" asp-for="@item.Id" /> <input type="submit" value="Elimina" class="btn btn-danger" />
</form>
}
}
</td>
</tr>
}
</tbody>
</table>
@{
var prevDisabled = !Model.HasPreviousPage ? "disabled" : "";
var nextDisabled = !Model.HasNextPage ? "disabled" : "";
}
<a asp-action="GestioneUtenti" asp-route-sortOrder="@ViewData["CurrentSort"]" asp-route-pageNumber="@(Model.PageIndex - 1)" asp-route-currentFilter="@ViewData["CurrentFilter"]"
class="btn btn-primary @prevDisabled">
Precedente
</a>
<a asp-action="GestioneUtenti"
asp-route-sortOrder="@ViewData["CurrentSort"]" asp-route-pageNumber="@(Model.PageIndex + 1)" asp-route-currentFilter="@ViewData["CurrentFilter"]"
class="btn btn-primary @nextDisabled">
Successivo
</a>
ed il controller è
[Authorize(Roles = "1,2")]
[HttpGet]
public async Task<IActionResult> GestioneUtenti(string searchString, string sortOrder, string currentFilter, int? pageNumber)
{
string SNome = HttpContext.Session.GetString("NomeCliente");
ViewData["NomeCliente"] = SNome;
ViewData["CurrentSort"] = sortOrder;
ViewData["CognomeSortParm"] = String.IsNullOrEmpty(sortOrder) ? "Cognome_desc" : "";
ViewData["CodiceSortParm"] = sortOrder == "Codice" ? "Codice_desc" : "Codice";
if (searchString != null)
{
pageNumber = 1;
}
else
{
searchString = currentFilter;
}
ViewData["CurrentFilter"] = searchString;
var UtenteElenco = await _context.Utenti.FromSqlRaw("SELECT * FROM Utenti Where NomeUtente <>'admin'").AsNoTracking().ToListAsync();
//CONTROLLO SE LA RICERCA è VUOTA
if (!String.IsNullOrEmpty(searchString))
{
//Controllo se nella ricerca ci sono apostrofo e le raddoppio
searchString = searchString.Replace("'", "''");
//Controllo se la Ricerca è Numerica o AlfaNumerica
long number1 = 0;
bool canConvert = long.TryParse(searchString, out number1);
//Se la Ricerca è Numerica cerco la Matricola
if (canConvert == true)
if (HttpContext.Session.GetString("Ruolo") == "1")
{
switch (sortOrder)
{
case "Cognome_desc":
UtenteElenco = await _context.Utenti.FromSqlRaw("SELECT * FROM Utenti Where NomeUtente <>'admin'").AsNoTracking().ToListAsync();
break;
default:
UtenteElenco = await _context.Utenti.FromSqlRaw("SELECT * FROM Utenti Where NomeUtente <>'admin'").AsNoTracking().ToListAsync();
break;
}
}
//Se la Ricerca è AlfaNumerica Cerco Sul Cognome o Codice Fiscale
else
switch (sortOrder)
{
case "Cognome_desc":
UtenteElenco = await _context.Utenti.FromSqlRaw("SELECT * FROM Utenti WHERE Cognome LIKE '" + searchString + "%' OR CodiceFiscale LIKE '" + searchString + "%' " +
"AND NomeUtente <>'admin' ORDER BY Cognome DESC").AsNoTracking().ToListAsync();
break;
default:
UtenteElenco = await _context.Utenti.FromSqlRaw("SELECT * FROM Utenti WHERE Cognome LIKE '" + searchString + "%' OR CodiceFiscale LIKE '" + searchString + "%' " +
"AND NomeUtente <>'admin' ORDER BY Cognome, Nome").AsNoTracking().ToListAsync();
break;
}
}
//se NON c'è Nessuna Ricerca
else
if (HttpContext.Session.GetString("Ruolo") == "1")
switch (sortOrder)
{
case "Cognome_desc":
UtenteElenco = await _context.Utenti.FromSqlRaw("SELECT * FROM Utenti Where NomeUtente <>'admin' ORDER BY Cognome DESC").AsNoTracking().ToListAsync(); ;
break;
default:
UtenteElenco = await _context.Utenti.FromSqlRaw("SELECT * FROM Utenti Where NomeUtente <>'admin' ORDER BY Cognome, Nome").AsNoTracking().ToListAsync();
break;
}
//Definisco il NUmero di Record per Pagina
int pageSize = 8;
return View(await PaginatedList<Utente>.CreateAsync(UtenteElenco, pageNumber ?? 1, pageSize));
}
fin qui tutto ok clicco su modifica e si apre il pop up
<a onclick="showInPopup('@Url.Action("UtenteModifica", "Admin", new { id = item.Id }, Context.Request.Scheme)')"
class="btn btn-info text-white"><i class="fas fa-pencil-alt"></i> Modifica</a>
che ha questa view
@model Cedolini.Models.Utente
@{
ViewBag.Title = "Modifica Utente";
Layout = null;
}
<div class="row">
<div class="col-md-12">
<form asp-action="UtenteModifica" asp-route-id="@Model.Id" onsubmit="return jQueryAjaxPost(this);">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="Id" />
@* <input type="hidden" asp-for="Date" />*@
<div class="tab-content">
<div class="tab-pane active" id="tab1">
<div class="form-group">
<label class="control-label">Codice Fiscale e Nome Utente</label>
<input asp-for="CodiceFiscale" class="form-control" />
<span asp-validation-for="CodiceFiscale" class="text-danger"></span>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label asp-for="Cognome" class="control-label"></label>
<input asp-for="Cognome" class="form-control" />
<span asp-validation-for="Cognome" class="text-danger"></span>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label asp-for="Nome" class="control-label"></label>
<input asp-for="Nome" class="form-control" />
<span asp-validation-for="Nome" class="text-danger"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label asp-for="DataNascita" class="control-label"></label>
<div class="input-group">
<div class="input-group-prepend">
</div>
<input asp-for="DataNascita" class="form-control" />
</div>
<span asp-validation-for="DataNascita" class="text-danger"></span>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label asp-for="ComuneNascita" class="control-label"></label>
<input asp-for="ComuneNascita" class="form-control" />
<span asp-validation-for="ComuneNascita" class="text-danger"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label asp-for="Ruolo" class="control-label"></label>
<select id="comboboxRuolo" runat="server">
<option value="1">Amministratore</option>
<option value="2">Supervisore</option>
<option value="3">Dipndente</option>
</select>
<input asp-for="Ruolo" class="form-control" />
<span asp-validation-for="Ruolo" class="text-danger"></span>
</div>
</div>
<div class="col-md-6">
<label asp-for="CodiceCliente" class="control-label"></label>
<select id="comboboxCliente" runat="server">
<option value="51">Azienda Caltanissetta</option>
<option value="52">Irf Caltanissetta</option>
<option value="53">Irf Agrigento</option>
<option value="54">Azienda Agrigento</option>
<option value="55">Irf Palermo</option>
<option value="56">Azienda Palermo</option>
<option value="57">Azienda Enna</option>
<option value="58">Irf Enna</option>
<option value="59">Irf Trapani</option>
</select>
<div class="form-group">
<label asp-for="CodiceCliente" class="control-label"></label>
<input asp-for="CodiceCliente" class="form-control" />
<span asp-validation-for="CodiceCliente" class="text-danger"></span>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label asp-for="Password" class="control-label"></label>
<input asp-for="Password" class="form-control" />
<span asp-validation-for="Password" class="text-danger"></span>
</div>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-6 offset-md-3";">
<input type="submit" value="Modifica" OnClick="btnRefresh_Click" class="btn btn-primary btn-block" OnClientClick="hourglass(); return true;" />
</div>
</div>
</form>
</div>
</div>
e questo controller
//UPDATE Dipendenti
[Authorize(Roles = "1,2")]
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> UtenteModifica(int Id, Utente Utenti)
{
if (ModelState.IsValid)
{
System.Diagnostics.Debug.WriteLine("id utente " +Id);
//Update(Se devo aggiornare i dati del dipendente)
if (Id != 0)
{
try//Aggiorno i Dati
{
await _context.Database.ExecuteSqlRawAsync("UPDATE Utenti SET NomeUtente = N'" + Utenti.CodiceFiscale + "', Cognome =N'" + Utenti.Cognome + "', " +
"Nome ='" + Utenti.Nome + "', DataNascita ='" + Utenti.DataNascita + "', ComuneNascita ='" + Utenti.ComuneNascita + "', " +
"CodiceFiscale = '" + Utenti.CodiceFiscale + "', Ruolo = " + Utenti.Ruolo + ", CodiceCliente = " + Utenti.CodiceCliente + ", Password ='" + Utenti.Password + "' " +
"WHERE(ID = " + Id + ")");
}
catch (DbUpdateConcurrencyException)
{
if (!UtenteExists(Utenti.Id))
{ return NotFound(); }
else
{ throw; }
}
}
else
//Insert(Se ho premuto crea Nuovo dipendente)
{
//Se Sono Presenti delle Apostrofi le Modifico
var Cognome = Utenti.Cognome.Replace("'", "''");
var Nome = Utenti.Nome.Replace("'", "''");
var ComuneNascita = Utenti.ComuneNascita.Replace("'", "''");
await _context.Database.ExecuteSqlRawAsync("INSERT INTO Utenti (NomeUtente,Password,Ruolo,Cognome,Nome,CodiceFiscale,DataNascita,ComuneNascita,CodiceCliente) " +
"SELECT N'" + Utenti.CodiceFiscale + "', N'" + Utenti.Password + "', " + Utenti.Ruolo + ", N'" + Cognome + "', N'" + Nome + "', N'" + Utenti.CodiceFiscale + "', " +
" '" + Utenti.DataNascita + "', N'" + Utenti.ComuneNascita + "',"+Utenti.CodiceCliente+";");
}
//Seleziono i dati per la Maschera Dipendenti
var UtentiAgg = await _context.Utenti.FromSqlRaw("SELECT * FROM Utenti Where NomeUtente <> 'admin'").AsNoTracking().ToListAsync();
return Json(new { isValid = true, html = Helper.RenderRazorViewToString(this, "GestioneUtenti", UtentiAgg) });
}
return Json(new { isValid = false, html = Helper.RenderRazorViewToString(this, "UtenteModifica", Utenti) });
}
ora il problema stà nel fatto che in locale funziona perfettamente ma dopo averlo pubblicato, dopo aver fatto una modifica a caso e premuto il pulsante modifica, non succede niente rimane aperto il pop up e non aggiorna le modifiche