salvând un model dintr-o vizualizare puternic tastat

Imaginați-vă că ați trimis un model la o vizualizare ... Încercați să salvați acest model odată ce îl editați. Dacă nu scrieți toate câmpurile (acea identitate a obiectului, de exemplu), într-un fel se va reseta la zero sau goală (dacă este șir). Ceea ce am făcut totuși a fost să scriu un câmp ascuns, astfel încât atunci când încerc să salvez acest obiect, sunt capabil să identific care este obiectul ...

Este această formă bună? Sau îmi lipsește un pas?

0

2 răspunsuri

Este în regulă. atâta timp cât nu vor edita identitatea obiectului, puteți utiliza id-ul ca intrare ascunsă.

Aș recomanda, de asemenea, să vă uitați la automapper dacă sunteți leneș scrise toate câmpurile.

0
adăugat

Dacă ați specificat tipul de model la vizualizarea antetului fișierului și utilizați metoda de cod , sunt destul de sigur că va avea deja grijă de trimiterea ID-ului Pentru dumneavoastră.

Editează: Am testat-o ​​și am dreptate. Metoda Html.BeginForm a creat rezultatul

<form action="/Product/Edit/1" method="post">

De asta trimite id-ul.

Iată controlerul pe care l-am testat:

using System.Web.Mvc;
using MvcApplication2.Models;

namespace MvcApplication2.Controllers
{
    public class ProductController : Controller
    {
       public ActionResult Edit(int id)
        {            
            return View(new Product { Id = 1, Name = "Test"});
        }

        [HttpPost]
        public ActionResult Edit(Product product)
        {
            return Edit(product.Id);
        }

    }
}

și Vizualizarea:

@model MvcApplication2.Models.Product

@using (Html.BeginForm()) {
    
Product <div class="editor-label"> @Html.LabelFor(model => model.Name) </div> <div class="editor-field"> @Html.EditorFor(model => model.Name) @Html.ValidationMessageFor(model => model.Name) </div>

<input type="submit" value="Save" />

}
0
adăugat
Eu folosesc Html.BeginForm. Dar întotdeauna se resetează id-ul la 0.
adăugat autor SoftwareSavant, sursa
Utilizează modelul pe care l-ați trimis de la controlor. Rutele dvs. trebuie, de asemenea, să fie setate în funcție de adresa URL generată de Html.BeginForm.
adăugat autor Adauto, sursa