J'ai une vue partielle (contrôle utilisateur) qui est partagée par mes vues Créer et Modifier. Lorsque je l'utilise dans l'affichage Modifier, je dois inclure un champ caché (Html.HiddenFor
) pour empêcher une erreur «Row changed or not found» dans mon service de données, mais lorsque je l'utilise dans la vue Créer, je dois supprimer le champ PK caché, pour éviter une erreur sur l'insertion d'une colonne d'identité.Problème avec la clé primaire dans une vue partielle partagée par les vues Créer et modifier
Il n'est pas possible de ne pas utiliser les colonnes d'identité dans cette application, alors comment puis-je «activer» ce champ caché PK en fonction de l'action invoquée?
Code Postal Action:
[HttpPost]
public ActionResult Edit(JobCardViewData viewData)
{
try
{
jobCardService.Update(viewData.JobCard);
Modifier Voir Extrait:
<% Html.RenderPartial("JobCardInput", Model); %>
Extrait partielle:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Poynting.Installation.Web.ViewData.JobCardViewData>" %>
<% using (Html.BeginForm())
mon problème ici avec votre première suggestion est le JobCardId est int, donc ce n'est jamais nul, et la valeur que le contrôleur récupère de la vue (en utilisant le champ caché) est 0, qui va avec le jobCard au servive. Votre seconde est belle, et j'ai fait autre chose sans vous y attacher. Merci! – ProfK
Tout à fait d'accord sur la première option - un int ne sera jamais nul, mais dans votre contrôleur, vous pouvez vérifier s'il est 0 et ensuite recréer un nouvel objet de la carte de travail à partir des valeurs affichées. – Ahmad