<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Développement Web avec .NET</title>
		<link>https://www.developpez.net/forums/</link>
		<description><![CDATA[Forum d'entraide sur les technologies Web de Microsoft (ASP.NET, MVC, Ajax, Silverlight, Services web, Azure, Sharepoint, etc.).]]></description>
		<language>fr</language>
		<lastBuildDate>Sat, 18 Apr 2026 13:13:38 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - Développement Web avec .NET</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title><![CDATA[[Débutant] Résultats d&#8217;examens par web]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182846&amp;goto=newpost</link>
			<pubDate>Tue, 24 Mar 2026 17:51:02 GMT</pubDate>
			<description>Bonsoir, 
J’aimerais débuter...</description>
			<content:encoded><![CDATA[<div>Bonsoir,<br />
J’aimerais débuter dans un projet qui me tient à cœur, je ne sais pas par quoi commencer.<br />
<br />
J’ai une base de données sous access que me permet de gérer les notes des devoir et examen pour afficher les résultats des étudiants.<br />
<br />
J’aimerais réaliser une page web (mieux que de réaliser une app android ou iPhone), pour que chaque étudiants peuvent afficher les résultats de leurs examens grâce à 3 champs qui doivent être vérifiés :<br />
- numéro de leurs carte Etudiant « Matricule »<br />
- numéro Id que je leurs fournis « Id_Etudiant »<br />
- mot de passe « MP_Etudiant »<br />
<br />
J’aimerais juste savoir par quoi je dois commencer ?<br />
Merci</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1428/dotnet/developpement-web-net/">Développement Web avec .NET</category>
			<dc:creator>m_charmat</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182846/dotnet/developpement-web-net/resultats-d-examens-web/</guid>
		</item>
		<item>
			<title>Utilisation de deux DBcontexts dans un même projet</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180722&amp;goto=newpost</link>
			<pubDate>Mon, 01 Dec 2025 11:45:02 GMT</pubDate>
			<description>Bonjour chers tous, 
Je suis...</description>
			<content:encoded><![CDATA[<div>Bonjour chers tous,<br />
Je suis débutant avec ASP.NET, je travaille sur un projet qui nécessite l'utilisation de procédures stockées qui se trouvent dans une Base de Données sur un autre serveur.<br />
Après plusieurs recherche sur le NET, j'ai créé deux contexts et la connexion à la seconde base de donnée et un model de la table de la seconde base de donnée.<br />
Mais à l'execution, j'ai l'erreur suivante : <b><u>Nom d'objet 'dbo.MaTable' non valide.</u></b> (<i>MaTable est le nom de la table source de la procédure stockée</i>).<br />
<br />
<b>Connexions</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td valign="top"><pre style="margin: 0"><span class="br0">&#123;</span>
  <span style="color: #FF0000;">&quot;Logging&quot;</span>: <span class="br0">&#123;</span>
    <span style="color: #FF0000;">&quot;LogLevel&quot;</span>: <span class="br0">&#123;</span>
      <span style="color: #FF0000;">&quot;Default&quot;</span>: <span style="color: #FF0000;">&quot;Information&quot;</span>,
      <span style="color: #FF0000;">&quot;Microsoft.AspNetCore&quot;</span>: <span style="color: #FF0000;">&quot;Warning&quot;</span>
    <span class="br0">&#125;</span>
  <span class="br0">&#125;</span>,
  <span style="color: #FF0000;">&quot;AllowedHosts&quot;</span>: <span style="color: #FF0000;">&quot;*&quot;</span>,
  <span style="color: #FF0000;">&quot;ConnectionStrings&quot;</span>: <span class="br0">&#123;</span>
    <span style="color: #FF0000;">&quot;ConnectionString_1&quot;</span>: <span style="color: #FF0000;">&quot;Server=ServeurLocal;Database=BaseLocale;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=True&quot;</span>,
    <span style="color: #FF0000;">&quot;ConnectionString_2&quot;</span>: <span style="color: #FF0000;">&quot;Server=ServeurDistant;Database=BaserDistante;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=True&quot;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><b>Context 1</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">partial</span> <span style="color: #0000ff;">class</span> Context1 : DbContext
<span class="br0">&#123;</span>
    <span style="color: #0000ff;">public</span> Context1 <span class="br0">&#40;</span>DbContextOptions&lt;Context1&gt; options<span class="br0">&#41;</span>
        : <span style="color: #0000ff;">base</span><span class="br0">&#40;</span>options<span class="br0">&#41;</span>
    <span class="br0">&#123;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">virtual</span> DbSet&lt;model1&gt; models1<span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
    ....</pre></td></tr></table></code><hr />
</div><div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">partial</span> <span style="color: #0000ff;">class</span> Context2 : DbContext
<span class="br0">&#123;</span>
    <span style="color: #0000ff;">public</span> Context2  <span class="br0">&#40;</span>DbContextOptions&lt;Context2&gt; options<span class="br0">&#41;</span>
        : <span style="color: #0000ff;">base</span><span class="br0">&#40;</span>options<span class="br0">&#41;</span>
    <span class="br0">&#123;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">virtual</span> DbSet&lt;model2&gt; models2<span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
    ....</pre></td></tr></table></code><hr />
</div><br />
<b>Injection des connexionx</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">var</span> ConnectionString1= builder.Configuration.GetConnectionString<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;ConnectionString_1&quot;</span><span class="br0">&#41;</span> ?? <span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span> InvalidOperationException<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;La connexion au serveru n'a pas &eacute;t&eacute; &eacute;tablie.&quot;</span><span class="br0">&#41;</span>;
builder.Services.AddDbContext&lt;Context1&gt;<span class="br0">&#40;</span>options =&gt;
    options.UseSqlServer<span class="br0">&#40;</span>ConnectionString_1<span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">var</span> ConnectionString2= builder.Configuration.GetConnectionString<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;ConnectionString_2&quot;</span><span class="br0">&#41;</span> ?? <span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span> InvalidOperationException<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;La connexion au serveru de trading n'a pas &eacute;t&eacute; &eacute;tablie.&quot;</span><span class="br0">&#41;</span>;
builder.Services.AddDbContext&lt;Context2&gt;<span class="br0">&#40;</span>options =&gt;
    options.UseSqlServer<span class="br0">&#40;</span>ConnectionString_2<span class="br0">&#41;</span><span class="br0">&#41;</span>;</pre></td></tr></table></code><hr />
</div><b>Controller</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">  <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">async</span> Task&lt;ActionResult&gt; Index<span class="br0">&#40;</span><span class="br0">&#41;</span>
  <span class="br0">&#123;</span>
       <span style="color: #0000ff;">var</span> liste= <span style="color: #0000ff;">await</span> _context2.model2.FromSqlRaw<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;EXEC procedure&quot;</span><span class="br0">&#41;</span>.ToListAsync<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
      <span style="color: #0000ff;">return</span> View<span class="br0">&#40;</span><span class="br0">&#41;</span>;
  <span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1428/dotnet/developpement-web-net/">Développement Web avec .NET</category>
			<dc:creator>karamaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180722/dotnet/developpement-web-net/utilisation-dbcontexts-meme-projet/</guid>
		</item>
		<item>
			<title>Page de modification avec champ liste (select)</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180275&amp;goto=newpost</link>
			<pubDate>Tue, 04 Nov 2025 10:39:45 GMT</pubDate>
			<description>Bonjour, 
Ma page de...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
Ma page de modification contient des champ select qui affiche les libellés et option garde les ID.<br />
Je vourais, sur ma page razor, sélectionner la donnée à modifier et le reste de la liste. J'ai une exception sur la page cshtml :<br />
<br />
<img src="https://www.developpez.net/forums/attachments/p671517d1762272993/dotnet/developpement-web-net/page-modification-champ-liste-select/exception.png/" border="0" alt="Nom : exception.png
Affichages : 144
Taille : 51,3 Ko"  style="float: CONFIG" /><br />
<br />
<b>Controller</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">async</span> Task&lt;ActionResult&gt; Edit<span class="br0">&#40;</span><span style="color: #0000ff;">int</span>? id<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
    <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>id == <span style="color: #0000ff;">null</span><span class="br0">&#41;</span>
    <span class="br0">&#123;</span>
        <span style="color: #0000ff;">return</span> NotFound<span class="br0">&#40;</span><span class="br0">&#41;</span>;
    <span class="br0">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">var</span> SearchOperation = <span style="color: #0000ff;">await</span> _context.Operations.FromSqlRaw<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;EXEC dbo.affiche_operations&quot;</span><span class="br0">&#41;</span>.ToListAsync<span class="br0">&#40;</span><span class="br0">&#41;</span>;
    <span style="color: #0000ff;">var</span> listOperations = SearchOperation.FirstOrDefault<span class="br0">&#40;</span>x =&gt; x.numero_operation == id<span class="br0">&#41;</span>;
&nbsp;
    <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>listOperations == <span style="color: #0000ff;">null</span><span class="br0">&#41;</span>
    <span class="br0">&#123;</span>
        <span style="color: #0000ff;">return</span> NotFound<span class="br0">&#40;</span><span class="br0">&#41;</span>;
    <span class="br0">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">var</span> listeNatureOperation = <span style="color: #0000ff;">await</span> _context.NatureOperations.ToListAsync<span class="br0">&#40;</span><span class="br0">&#41;</span>;
    ViewBag.lib_nature= <span style="color: #0000ff;">new</span> SelectList<span class="br0">&#40;</span>listeNatureOperation, <span style="color: #FF0000;">&quot;CodeNature&quot;</span>, <span style="color: #FF0000;">&quot;LibNature&quot;</span>, selectedValue: listOperations.lib_nature<span class="br0">&#41;</span>;
&nbsp;
    <span style="color: #0000ff;">var</span> listEmetteur = <span style="color: #0000ff;">await</span> _context.Emetteurs.ToListAsync<span class="br0">&#40;</span><span class="br0">&#41;</span>;
    ViewBag.Emetteur = <span style="color: #0000ff;">new</span> SelectList<span class="br0">&#40;</span>listEmetteur, <span style="color: #FF0000;">&quot;CodeEmetteur&quot;</span>, <span style="color: #FF0000;">&quot;raison_sociale&quot;</span>, selectedValue: listOperations.CodeEmetteur<span class="br0">&#41;</span>;
&nbsp;
      <span style="color: #0000ff;">return</span> View<span class="br0">&#40;</span>listOperations<span class="br0">&#41;</span>;
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><b>Page cshtml</b><br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br /></div></td><td valign="top"><pre style="margin: 0">&lt;form asp-action=<span style="color: #FF0000;">&quot;Edit&quot;</span>&gt;
    &lt;div asp-validation-summary=<span style="color: #FF0000;">&quot;ModelOnly&quot;</span> <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;text-danger&quot;</span>&gt;&lt;/div&gt;
    &lt;input type=<span style="color: #FF0000;">&quot;hidden&quot;</span> asp-<span style="color: #0000ff;">for</span>=<span style="color: #FF0000;">&quot;numero_operation&quot;</span> /&gt;
    &lt;div <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;form-group&quot;</span>&gt;
        &lt;label asp-<span style="color: #0000ff;">for</span>=<span style="color: #FF0000;">&quot;CodeEmetteur&quot;</span> <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;control-label&quot;</span>&gt;&lt;/label&gt;
        &lt;<span style="color: #0000ff;">select</span> asp-<span style="color: #0000ff;">for</span>=<span style="color: #FF0000;">&quot;CodeEmetteur&quot;</span> asp-items=<span style="color: #FF0000;">&quot;@ViewBag.Emetteur&quot;</span> <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;form-control&quot;</span>&gt;
            &lt;option <span style="color: #0000ff;">value</span>=<span style="color: #FF0000;">&quot;&quot;</span>&gt;-- Selectionner &eacute;metteur --&lt;/option&gt;
        &lt;/<span style="color: #0000ff;">select</span>&gt;
        &lt;span asp-validation-<span style="color: #0000ff;">for</span>=<span style="color: #FF0000;">&quot;CodeEmetteur&quot;</span> <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;text-danger&quot;</span>&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;form-group&quot;</span>&gt;
        &lt;label asp-<span style="color: #0000ff;">for</span>=<span style="color: #FF0000;">&quot;lib_nature&quot;</span> <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;control-label&quot;</span>&gt;&lt;/label&gt;
        &lt;<span style="color: #0000ff;">select</span> asp-<span style="color: #0000ff;">for</span>=<span style="color: #FF0000;">&quot;lib_nature&quot;</span> asp-items=<span style="color: #FF0000;">&quot;@ViewBag.lib_nature&quot;</span> <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;form-control&quot;</span>&gt;
            &lt;option <span style="color: #0000ff;">value</span>=<span style="color: #FF0000;">&quot;&quot;</span>&gt;-- Selectionner le type --&lt;/option&gt;
        &lt;/<span style="color: #0000ff;">select</span>&gt;
        &lt;span asp-validation-<span style="color: #0000ff;">for</span>=<span style="color: #FF0000;">&quot;lib_nature&quot;</span> <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;text-danger&quot;</span>&gt;&lt;/span&gt;
    &lt;/div&gt;
&lt;/form&gt;</pre></td></tr></table></code><hr />
</div></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p671517d1762272993/dotnet/developpement-web-net/page-modification-champ-liste-select/exception.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1428/dotnet/developpement-web-net/">Développement Web avec .NET</category>
			<dc:creator>karamaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180275/dotnet/developpement-web-net/page-modification-champ-liste-select/</guid>
		</item>
		<item>
			<title>Problème de compatibilité de type entre le controller et la vue</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180165&amp;goto=newpost</link>
			<pubDate>Wed, 29 Oct 2025 10:40:54 GMT</pubDate>
			<description>Bonjour, 
Je travaille sur un...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
Je travaille sur un projet ASP.NET en MVC. J'ai une table Opération qui a deux clés étrangères de deux autres tables. <br />
Je voudrais afficher la liste des opérations avec pagination et afficher en lieu et place des clés étrangère le libellé.<br />
Seulement, j'ai une erreur :<br />
<b><i>nvalidOperationException: The model item passed into the ViewDataDictionary is of type 'BOCNEW_2025.Controllers.BOC_NEW.Pagination`1[BOCNEW_2025.Models.Operation]', but this ViewDataDictionary instance requires a model item of type 'System.Collections.Generic.IEnumerable`1[BOCNEW_2025.Models.Operation]'.</i></b>.<br />
Je comprends qu'il s'agit d'un problème de compatibilité entre les données attendues par la vue et celles envoyées par le controller mais je n'arrive pas à résoudre le problème depuis hier.<br />
<br />
<b>Model Opération</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">partial</span> <span style="color: #0000ff;">class</span> Operation
<span class="br0">&#123;</span>
    <span class="br0">&#91;</span>Display<span class="br0">&#40;</span>Name = <span style="color: #FF0000;">&quot;Code &eacute;metteur&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
    <span class="br0">&#91;</span>Required<span class="br0">&#93;</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> CodeEmetteur <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
&nbsp;
    <span class="br0">&#91;</span>Display<span class="br0">&#40;</span>Name = <span style="color: #FF0000;">&quot;Num&eacute;ro op&eacute;ration&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> NumeroOperation <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
&nbsp;
    <span class="br0">&#91;</span>Display<span class="br0">&#40;</span>Name = <span style="color: #FF0000;">&quot;Code nature op&eacute;ration&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
    <span class="br0">&#91;</span>Required<span class="br0">&#93;</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> CodeNature <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
&nbsp;
    <span class="br0">&#91;</span>Display<span class="br0">&#40;</span>Name = <span style="color: #FF0000;">&quot;Observation&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> Observations <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
&nbsp;
    <span class="br0">&#91;</span>Display<span class="br0">&#40;</span>Name = <span style="color: #FF0000;">&quot;Date d'enregistrement&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
    <span style="color: #0000ff;">public</span> DateTime? DateEnregistrement <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
&nbsp;
    <span class="br0">&#91;</span>Display<span class="br0">&#40;</span>Name = <span style="color: #FF0000;">&quot;Date de diffusion&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
    <span style="color: #0000ff;">public</span> DateTime? DateDebutDiffusion <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
&nbsp;
    <span class="br0">&#91;</span>Display<span class="br0">&#40;</span>Name = <span style="color: #FF0000;">&quot;Date de fin de diffusion&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
    <span style="color: #0000ff;">public</span> DateTime? DateFinDiffusion <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
&nbsp;
    <span class="br0">&#91;</span>Display<span class="br0">&#40;</span>Name = <span style="color: #FF0000;">&quot;Document joint&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> Document <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
&nbsp;
    <span class="br0">&#91;</span>NotMapped<span class="br0">&#93;</span>
    <span style="color: #0000ff;">public</span> IEnumerable&lt;SelectListItem&gt; NatureOperation <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
&nbsp;
    <span class="br0">&#91;</span>NotMapped<span class="br0">&#93;</span>
    <span style="color: #0000ff;">public</span> IEnumerable&lt;SelectListItem&gt; Emetteur <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><b>Model Pagination</b><br />
Pour la pagination, j'ai créé une classe générique qui prend en paramètres la source (model) sous la forme de List&lt;T&gt; et le nombre de page, la page active, etc<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> PaginationViewModel&lt;T&gt; : List&lt;T&gt;
<span class="br0">&#123;</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> TotalItems <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> PageActive <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> NbreParPage <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> TotalPage <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> DebutPage <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> FinPage <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">public</span> PaginationViewModel<span class="br0">&#40;</span>List&lt;T&gt; items, <span style="color: #0000ff;">int</span> count, <span style="color: #0000ff;">int</span> pageIndex, <span style="color: #0000ff;">int</span> pageSize<span class="br0">&#41;</span>
    <span class="br0">&#123;</span>
        TotalItems = count;
        PageActive = pageIndex;
        NbreParPage = pageSize;
        TotalPage = <span class="br0">&#40;</span><span style="color: #0000ff;">int</span><span class="br0">&#41;</span>Math.Ceiling<span class="br0">&#40;</span>count / <span class="br0">&#40;</span><span style="color: #0000ff;">double</span><span class="br0">&#41;</span>NbreParPage<span class="br0">&#41;</span>;
        DebutPage = pageIndex - <span style="color: #cc66cc;">5</span>;
        FinPage = pageIndex + <span style="color: #cc66cc;">4</span>;
&nbsp;
        <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>DebutPage &lt;= <span style="color: #cc66cc;">0</span><span class="br0">&#41;</span>
        <span class="br0">&#123;</span>
            FinPage = FinPage - <span class="br0">&#40;</span>DebutPage - <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>;
            DebutPage = <span style="color: #cc66cc;">1</span>;
        <span class="br0">&#125;</span>
        <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>FinPage &gt; TotalPage<span class="br0">&#41;</span>
        <span class="br0">&#123;</span>
            FinPage = TotalPage;
            <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>FinPage &gt; <span style="color: #cc66cc;">10</span><span class="br0">&#41;</span>
            <span class="br0">&#123;</span>
                DebutPage = FinPage - <span style="color: #cc66cc;">9</span>;
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
        <span style="color: #0000ff;">this</span>.AddRange<span class="br0">&#40;</span>items<span class="br0">&#41;</span>;
    <span class="br0">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> PrecDesactive =&gt; PageActive &gt; <span style="color: #cc66cc;">1</span>;
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> SuivDesactive =&gt; PageActive &lt; TotalPage;
&nbsp;
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> PaginationViewModel&lt;T&gt; Create<span class="br0">&#40;</span>List&lt;T&gt; source, <span style="color: #0000ff;">int</span> pageIndex, <span style="color: #0000ff;">int</span> pageSize<span class="br0">&#41;</span> 
    <span class="br0">&#123;</span>
        <span style="color: #0000ff;">var</span> count = source.Count;
        <span style="color: #0000ff;">var</span> items = source.Skip<span class="br0">&#40;</span><span class="br0">&#40;</span>pageIndex - <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> * pageSize<span class="br0">&#41;</span>.Take<span class="br0">&#40;</span>pageSize<span class="br0">&#41;</span>.ToList<span class="br0">&#40;</span><span class="br0">&#41;</span>;
        <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span> PaginationViewModel&lt;T&gt;<span class="br0">&#40;</span>items, count, pageIndex, pageSize<span class="br0">&#41;</span>;
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><b>Le Controller</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> ActionResult Index<span class="br0">&#40;</span><span style="color: #0000ff;">int</span> NumPage<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
    <span style="color: #0000ff;">int</span> NbreParPage = <span style="color: #cc66cc;">10</span>;
    <span style="color: #808080;">//On r&eacute;initialise le num&eacute;ro de page &agrave; 1 si le num&eacute;ro est &eacute;gal ou inf&eacute;rieru &agrave; 1</span>
    <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>NumPage &lt; <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
        NumPage = <span style="color: #cc66cc;">1</span>;
&nbsp;
    <span style="color: #0000ff;">var</span> operations = _context.Operations
        .Include<span class="br0">&#40;</span>o =&gt; o.NatureOperation<span class="br0">&#41;</span>
        .Include<span class="br0">&#40;</span>o =&gt; o.Emetteur<span class="br0">&#41;</span>
        .ToList<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
    <span style="color: #0000ff;">return</span> View<span class="br0">&#40;</span>PaginationViewModel&lt;Operation&gt;.Create<span class="br0">&#40;</span>operations, NumPage, NbreParPage<span class="br0">&#41;</span><span class="br0">&#41;</span>;
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><b>La page cshtml</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
@model BOCNEW_2025.Models.PaginationViewModel&lt;BOCNEW_2025.Models.Operation&gt;
@foreach <span class="br0">&#40;</span><span style="color: #0000ff;">var</span> item <span style="color: #0000ff;">in</span> Model<span class="br0">&#41;</span> <span class="br0">&#123;</span>
&lt;tr&gt;
    &lt;td <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;col-1&quot;</span> style=<span style="color: #FF0000;">&quot;width:5%; text-align:right;&quot;</span>&gt;
            @Html.DisplayFor<span class="br0">&#40;</span>modeltem =&gt; item.CodeEmetteur<span class="br0">&#41;</span>
    &lt;/td&gt;
    &lt;td <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;col-1&quot;</span> style=<span style="color: #FF0000;">&quot;width:5%; text-align:right;&quot;</span>&gt;
            @Html.DisplayFor<span class="br0">&#40;</span>modelItem =&gt; item.Emetteur<span class="br0">&#41;</span>
    &lt;/td&gt;
     &lt;td <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;col-3&quot;</span> style=<span style="color: #FF0000;">&quot;width:3%; text-align:right;&quot;</span>&gt;
            @Html.DisplayFor<span class="br0">&#40;</span>modelItem =&gt; item.CodeNature<span class="br0">&#41;</span>
    &lt;/td&gt;
        &lt;td <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;col-4&quot;</span> style=<span style="color: #FF0000;">&quot;width:15%&quot;</span>&gt;
            @Html.DisplayFor<span class="br0">&#40;</span>modelItem =&gt; item.DateDebutDiffusion<span class="br0">&#41;</span>
    &lt;/td&gt;
        &lt;td style=<span style="color: #FF0000;">&quot;width:15%&quot;</span>&gt;
            @Html.DisplayFor<span class="br0">&#40;</span>modelItem =&gt; item.DateFinDiffusion<span class="br0">&#41;</span>
    &lt;/td&gt;
        &lt;td style=<span style="color: #FF0000;">&quot;width:30%&quot;</span>&gt;
            @Html.DisplayFor<span class="br0">&#40;</span>modelItem =&gt; item.Observations<span class="br0">&#41;</span>
        &lt;/td&gt;
        &lt;td style=<span style="color: #FF0000;">&quot;width:15%&quot;</span>&gt;
        &lt;button type=<span style="color: #FF0000;">&quot;button&quot;</span> <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;btn btn-primary&quot;</span>&gt;&lt;a asp-action=<span style="color: #FF0000;">&quot;Edit&quot;</span> asp-route-id=<span style="color: #FF0000;">&quot;@item.NatureOperation&quot;</span> <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;text-white&quot;</span>&gt;Modifier&lt;/a&gt;&lt;/button&gt;
        &lt;button type=<span style="color: #FF0000;">&quot;button&quot;</span> <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;btn btn-danger&quot;</span>&gt;&lt;a asp-action=<span style="color: #FF0000;">&quot;Delete&quot;</span> asp-route-id=<span style="color: #FF0000;">&quot;@item.NatureOperation&quot;</span> <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;text-white&quot;</span>&gt;Supprimer&lt;/a&gt;&lt;/button&gt;
    &lt;/td&gt;
&lt;/tr&gt;
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1428/dotnet/developpement-web-net/">Développement Web avec .NET</category>
			<dc:creator>karamaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180165/dotnet/developpement-web-net/probleme-compatibilite-type-entre-controller-vue/</guid>
		</item>
		<item>
			<title><![CDATA[Envoie des données d'une table (html) vers le controller (MVC)]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179775&amp;goto=newpost</link>
			<pubDate>Fri, 10 Oct 2025 10:22:36 GMT</pubDate>
			<description>Bonjour, 
Je suis débutant en...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
Je suis débutant en ASP.NET. Je travaille sur un projet qui récupère des données d'un webservice REST et les affiche dans une table et par click sur un bouton, les données de la tables doivent être enregistrées dans une base de données<br />
Le problème auquel je suis confronté c'est l'enregistrement dans la base de données. <br />
J'ai créé deux classes Model : une qui a le détail des données et une autre qui est une liste qui accueille les données. C'est cette liste qui contient les données envoyées au controller par AJAX. <br />
<br />
<b>Classe model Détail vente</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> DetailVenteModel
<span class="br0">&#123;</span>
    <span class="br0">&#91;</span>Required<span class="br0">&#93;</span>
    <span class="br0">&#91;</span>Display<span class="br0">&#40;</span>Name = <span style="color: #FF0000;">&quot;Symbole&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span>? Symbole<span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
&nbsp;
    <span class="br0">&#91;</span>Display<span class="br0">&#40;</span>Name = <span style="color: #FF0000;">&quot;Prix Vente&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">float</span> PrixDeVente<span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
&nbsp;
    <span class="br0">&#91;</span>Display<span class="br0">&#40;</span>Name = <span style="color: #FF0000;">&quot;Prix d'achat&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> PrixAchat<span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
<b>Classe model liste vente</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br /></div></td><td valign="top"><pre style="margin: 0"> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> ListVente
 <span class="br0">&#123;</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> Id <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
    List&lt;EquitiesDetailModel&gt; ListOfEquities <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><b>Controler </b><br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
 <span class="br0">&#91;</span>HttpPost<span class="br0">&#93;</span>
 <span style="color: #0000ff;">public</span> ActionResult InsertVente<span class="br0">&#40;</span>IEnumerable&lt;DetailVenteModel&gt; ListeDetailVenteModels<span class="br0">&#41;</span>
 <span class="br0">&#123;</span>
&nbsp;
     <span style="color: #0000ff;">foreach</span> <span class="br0">&#40;</span><span style="color: #0000ff;">var</span> item <span style="color: #0000ff;">in</span> equitiesDetailViewModels<span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
         DetailVenteModel vente = <span style="color: #0000ff;">new</span> DetailVenteModel<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
         vente.Symbole = item.Symbole;
         vente.PrixDeVente= item.PrixDeVente;
         vente.PrixAchat= item.PrixDeVente;
&nbsp;
&nbsp;
         _context.Add<span class="br0">&#40;</span>item<span class="br0">&#41;</span>;
         <span style="color: #0000ff;">await</span> _context.SaveChangesAsync<span class="br0">&#40;</span><span class="br0">&#41;</span>;
     <span class="br0">&#125;</span>
&nbsp;
     <span style="color: #0000ff;">return</span> Json<span class="br0">&#40;</span><span style="color: #0000ff;">new</span> <span class="br0">&#123;</span> success = <span style="color: #0000ff;">true</span> <span class="br0">&#125;</span><span class="br0">&#41;</span>;
 <span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><b>Page ASP</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
&lt;script type=<span style="color: #FF0000;">&quot;text/javascript&quot;</span>&gt;
    $<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.ready<span class="br0">&#40;</span>function <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
       $<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;input[type=button]&quot;</span><span class="br0">&#41;</span>.click<span class="br0">&#40;</span>function <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
            <span style="color: #0000ff;">var</span> ListeDetailVenteModels = <span style="color: #0000ff;">new</span> Array<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
            $<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;#listeTransactions&quot;</span><span class="br0">&#41;</span>.find<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;tr:gt(0)&quot;</span><span class="br0">&#41;</span>.each<span class="br0">&#40;</span>function <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
                <span style="color: #0000ff;">var</span> symbole = $<span class="br0">&#40;</span><span style="color: #0000ff;">this</span><span class="br0">&#41;</span>.find<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;td:eq(0)&quot;</span><span class="br0">&#41;</span>.text<span class="br0">&#40;</span><span class="br0">&#41;</span>;
                <span style="color: #0000ff;">var</span> prixDeVente= $<span class="br0">&#40;</span><span style="color: #0000ff;">this</span><span class="br0">&#41;</span>.find<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;td:eq(1)&quot;</span><span class="br0">&#41;</span>.text<span class="br0">&#40;</span><span class="br0">&#41;</span>;
                <span style="color: #0000ff;">var</span> prixAchat= $<span class="br0">&#40;</span><span style="color: #0000ff;">this</span><span class="br0">&#41;</span>.find<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;td:eq(2)&quot;</span><span class="br0">&#41;</span>.text<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
&nbsp;
                <span style="color: #0000ff;">var</span> DetailVenteModel = <span class="br0">&#123;</span><span class="br0">&#125;</span>;
&nbsp;
                DetailVenteModel.symbol = symbole ;
                DetailVenteModel.BestBidPrice = prixDeVente;
                DetailVenteModel.BestBidVolume = prixAchat;
&nbsp;
&nbsp;
                ListeDetailVenteModels .push<span class="br0">&#40;</span>DetailVenteModel<span class="br0">&#41;</span>;
            <span class="br0">&#125;</span><span class="br0">&#41;</span>;
&nbsp;
            $.ajax<span class="br0">&#40;</span><span class="br0">&#123;</span>
                <span style="color: #0000ff;">async</span>: <span style="color: #0000ff;">true</span>,
                type: <span style="color: #FF0000;">'POST'</span>,
                dataType: <span style="color: #FF0000;">&quot;JSON&quot;</span>,
                contentType: <span style="color: #FF0000;">'application/json; charset=utf-8'</span>,
                url: <span style="color: #FF0000;">'@Url.Action(&quot;InsertVente&quot;, &quot;Vente&quot;)'</span>,
                data: JSON.stringify<span class="br0">&#40;</span>ListeDetailVenteModels <span class="br0">&#41;</span>,
                success: function <span class="br0">&#40;</span>data<span class="br0">&#41;</span> <span class="br0">&#123;</span>
                     <span style="color: #808080;">//console.log();</span>
                    alert<span class="br0">&#40;</span><span style="color: #FF0000;">'Donn&eacute;es enregistr&eacute;es avec succ&egrave;s !'</span><span class="br0">&#41;</span>;
                <span class="br0">&#125;</span>,
                error: function <span class="br0">&#40;</span>xhr, status, error<span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    console.log<span class="br0">&#40;</span><span style="color: #FF0000;">'Erreur lors de l<span style="color: #800000;">\'</span>enregistrement des donn&eacute;es : '</span> + error<span class="br0">&#41;</span>;
                <span class="br0">&#125;</span>
            <span class="br0">&#125;</span><span class="br0">&#41;</span>;
        <span class="br0">&#125;</span><span class="br0">&#41;</span>;
&nbsp;
    <span class="br0">&#125;</span><span class="br0">&#41;</span>;
&lt;/script&gt;
&nbsp;
 &lt;div&gt;&lt;input type=<span style="color: #FF0000;">&quot;button&quot;</span> id=<span style="color: #FF0000;">&quot;envoyer&quot;</span> <span style="color: #0000ff;">value</span>=<span style="color: #FF0000;">&quot;Enregistrer dans la base de donn&eacute;es&quot;</span> <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;btn btn-primary&quot;</span>&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;
   &lt;table <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;table table-bordered&quot;</span> id=<span style="color: #FF0000;">&quot;listeTransactions&quot;</span>&gt;
        &lt;thead&gt;
            &lt;tr <span style="color: #0000ff;">class</span>=<span style="color: #FF0000;">&quot;table-success&quot;</span>&gt;
                &lt;th&gt;Symbole&lt;/th&gt;
                &lt;th&gt;Meilleure vente&lt;/th&gt;
                &lt;th&gt;Meilleur prix achat&lt;/th&gt;
            &lt;/tr&gt;
        &lt;/thead&gt;
        &lt;tbody&gt;
             @foreach <span class="br0">&#40;</span>DataRow row <span style="color: #0000ff;">in</span> Model.Rows<span class="br0">&#41;</span>
            <span class="br0">&#123;</span>
                &lt;tr&gt;
                    &lt;td id=<span style="color: #FF0000;">&quot;symbol&quot;</span>&gt;@row<span class="br0">&#91;</span><span style="color: #FF0000;">&quot;Symbole&quot;</span><span class="br0">&#93;</span>&lt;/td&gt;
                    &lt;td id=<span style="color: #FF0000;">&quot;BestBidPrice&quot;</span>&gt;@row<span class="br0">&#91;</span><span style="color: #FF0000;">&quot;PrixDeVente&quot;</span><span class="br0">&#93;</span>&lt;/td&gt;
                    &lt;td id=<span style="color: #FF0000;">&quot;BestBidVolume&quot;</span>&gt;@row<span class="br0">&#91;</span><span style="color: #FF0000;">&quot;PrixAchat&quot;</span><span class="br0">&#93;</span>&lt;/td&gt;
&nbsp;
                &lt;/tr&gt;
            <span class="br0">&#125;</span>
        &lt;/tbody&gt;
&nbsp;
    &lt;/table&gt;
&lt;/div&gt;</pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1428/dotnet/developpement-web-net/">Développement Web avec .NET</category>
			<dc:creator>karamaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179775/dotnet/developpement-web-net/envoie-donnees-d-table-html-vers-controller-mvc/</guid>
		</item>
		<item>
			<title>Structuration d’une architecture .NET Core 9 Blazor pour microservices et gestion sécurisée des comptes utilis</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2178880&amp;goto=newpost</link>
			<pubDate>Thu, 28 Aug 2025 09:04:29 GMT</pubDate>
			<description>Bonjour à tous, 
 
Je...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
Je travaille actuellement sur une <b>application de gestion de contenus</b> (type wiki) développée en <b>.NET Core 9</b>, avec un objectif <b>microservices ready</b> et une architecture suffisamment modulaire pour évoluer sans refonte lourde. L’application est prévue pour tourner sur <b>Azure</b>, <b>sans conteneurs</b> pour le moment.<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			<b>Architecture simplifiée</b>
			
		<hr />
	</div>
</div>Blazor (mode à définir : Auto, WASM ou Server ?) &#8594; API &#8594; Domaines &#8594; Shared<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			<b>Détails des couches</b>
			
		<hr />
	</div>
</div><ul><li style=""><b>Shared</b><br />
Contient toutes les <b>abstractions</b> et les <b>contrats d’interface</b> pour respecter <b>DRY</b> et <b>SOLID</b>, et éviter la duplication de définitions entre domaines.<br /></li><li style=""><b>Domaines</b><br />
Chaque domaine est organisé en plusieurs projets :<br />
<ul><li style="">.csproj pour les <b>services</b> et <b>repositories</b></li><li style="">.csproj pour le <b>modèle</b></li><li style="">.csproj pour le <b>data seeding</b> (exécutable via <b>PMC</b> et <b>YAML pipeline</b>)</li></ul><br />
<br />
Aujourd’hui, j’ai déjà un domaine pour la <b>gestion des contenus</b> (<i>Content / ContentManagement</i>).<br />
Je souhaite ajouter un <b>domaine de gestion des comptes utilisateurs</b>.<br /></li><li style=""><b>Seeders &amp; DbContext</b><br />
Pour chaque domaine, j’ai mis en place un pattern avec <i>IDesignTimeDbContextFactory</i> pour permettre les migrations EF Core en toute sécurité, ainsi qu’un runner console pour exécuter les seeders (données réelles ou fictives).</li></ul><br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			<b>Gestion des utilisateurs et sécurité</b>
			
		<hr />
	</div>
</div>Mon idée est d’utiliser <b>Microsoft Identity</b> (ou son remplaçant le plus récent dans l’écosystème .NET).<br />
<br />
<ul><li style="">Profiter de l’<b>échafaudage automatique des pages</b>] d’authentification/gestion utilisateurs (comme dans un projet Blazor avec Identity activé dès le départ).</li><li style="">Sécurité des APIs via <b>JWT</b>.</li><li style="">Objectif : isoler ce domaine comme pour les contenus, tout en gardant l’extensibilité nécessaire pour évoluer vers une architecture distribuée.</li></ul><br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			<b>Questions ouvertes</b>
			
		<hr />
	</div>
</div><ol class="decimal"><li style=""><b>Validation architecture &amp; microservices</b><br />
Est-ce que cette architecture vous semble bonne en l’état&#8239;?<br />
Si plus tard je déploie <i>une API par domaine</i>, cela sera-t-il conforme aux bonnes pratiques microservices&#8239;?<br />
Je cherche surtout des conseils pour rester <b>DRY</b>, <b>SOLID</b> et prêt pour des microservices.<br /></li><li style=""><b>Gestion des comptes et sécurité backend</b><br />
J’hésite sur l’implantation&#8239;: créer un <i>domaine Account distribué par l’API</i> pour gérer tout côté backend, ou utiliser la gestion intégrée à Blazor (Identity) et sécuriser les APIs via JWT.<br />
<ul><li style="">Comment assurez-vous habituellement la <b>sécurité, la gestion des utilisateurs et des rôles</b> côté backend&#8239;?</li><li style="">Peut-on combiner l’<b>implémentation Identity côté Blazor</b>] avec la sécurisation des APIs&#8239;?</li><li style="">Je prévois aussi une <b>section d’administration des comptes (avec admin)</b>, ce qui pousse vers un microservice dédié.</li></ul><br /></li><li style=""><b>Choix du modèle Blazor</b><br />
Entre <i>Server, WASM et Auto</i>, lequel est le plus pertinent dans un contexte “microservices ready”&#8239;?<br />
Je peine à comprendre les subtilités entre <i>Server</i> et <i>WASM</i>, et comment utiliser l’un ou l’autre pour sécuriser correctement mes APIs.</li></ol><br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			<b>Extraits de code essentiels</b>
			
		<hr />
	</div>
</div><b>Shared / Contracts / IRepository.cs</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">interface</span> IRepository&lt;TEntity&gt; <span style="color: #0000ff;">where</span> TEntity : <span style="color: #0000ff;">class</span>
<span class="br0">&#123;</span>
Task&lt;TEntity?&gt; GetByIdAsync<span class="br0">&#40;</span>Guid id<span class="br0">&#41;</span>;
Task&lt;IEnumerable&lt;TEntity&gt;&gt; GetAllAsync<span class="br0">&#40;</span><span class="br0">&#41;</span>;
Task AddAsync<span class="br0">&#40;</span>TEntity entity<span class="br0">&#41;</span>;
<span style="color: #0000ff;">void</span> Update<span class="br0">&#40;</span>TEntity entity<span class="br0">&#41;</span>;
<span style="color: #0000ff;">void</span> Remove<span class="br0">&#40;</span>TEntity entity<span class="br0">&#41;</span>;
Task&lt;<span style="color: #0000ff;">int</span>&gt; SaveChangesAsync<span class="br0">&#40;</span><span class="br0">&#41;</span>;
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><b>Shared / Data / BaseDbContext.cs</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">abstract</span> <span style="color: #0000ff;">class</span> BaseDbContext : DbContext
<span class="br0">&#123;</span>
<span style="color: #0000ff;">public</span> BaseDbContext<span class="br0">&#40;</span>DbContextOptions options<span class="br0">&#41;</span> : <span style="color: #0000ff;">base</span><span class="br0">&#40;</span>options<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><b>Content / Data / ContentDbContext.cs</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> ContentDbContext : BaseDbContext
<span class="br0">&#123;</span>
<span style="color: #0000ff;">public</span> ContentDbContext<span class="br0">&#40;</span>DbContextOptions&lt;ContentDbContext&gt; options<span class="br0">&#41;</span> : <span style="color: #0000ff;">base</span><span class="br0">&#40;</span>options<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="br0">&#125;</span>
<span style="color: #0000ff;">public</span> DbSet&lt;ContentItem&gt; ContentItems =&gt; <span style="color: #0080ff;">Set</span>&lt;ContentItem&gt;<span class="br0">&#40;</span><span class="br0">&#41;</span>;
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><b>Content / Data / DesignTimeContentDbContextFactory.cs</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> DesignTimeContentDbContextFactory : IDesignTimeDbContextFactory&lt;ContentDbContext&gt;
<span class="br0">&#123;</span>
<span style="color: #0000ff;">public</span> ContentDbContext CreateDbContext<span class="br0">&#40;</span><span style="color: #0000ff;">string</span><span class="br0">&#91;</span><span class="br0">&#93;</span> args<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span style="color: #0000ff;">var</span> options = <span style="color: #0000ff;">new</span> DbContextOptionsBuilder&lt;ContentDbContext&gt;<span class="br0">&#40;</span><span class="br0">&#41;</span>
.UseSqlServer<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;DataSource=:memory:&quot;</span><span class="br0">&#41;</span>
.Options;
<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span> ContentDbContext<span class="br0">&#40;</span>options<span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><b>Seeders / ISeeder.cs</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">interface</span> ISeeder
<span class="br0">&#123;</span>
Task SeedAsync<span class="br0">&#40;</span>CancellationToken cancellationToken = <span style="color: #0000ff;">default</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">string</span> Name <span class="br0">&#123;</span> <span style="color: #0000ff;">get</span>; <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><b>Seeders / RealDataSeeder.cs</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> RealDataSeeder : ISeeder
<span class="br0">&#123;</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">async</span> Task SeedAsync<span class="br0">&#40;</span>CancellationToken cancellationToken = <span style="color: #0000ff;">default</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span style="color: #808080;">// logique seeding r&eacute;elle</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><b>Seeders / DummyDataSeeder.cs</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> DummyDataSeeder : ISeeder
<span class="br0">&#123;</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">async</span> Task SeedAsync<span class="br0">&#40;</span>CancellationToken cancellationToken = <span style="color: #0000ff;">default</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span style="color: #808080;">// logique seeding fictive</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div>---<br />
<br />
Merci d’avance pour vos retours et conseils &#128591;</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1428/dotnet/developpement-web-net/">Développement Web avec .NET</category>
			<dc:creator>kheironn</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2178880/dotnet/developpement-web-net/structuration-d-architecture-net-core-9-blazor-microservices-gestion-securisee-comptes-utilis/</guid>
		</item>
	</channel>
</rss>
