Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Include and Exclude in asp.net mvc binding OR creat a new subset object?

Tags:

asp.net-mvc

Does it make sense create an object that contains only those properties that the user will input on the webpage, use that for binding in the controller, and then map to the full Entity Object? Or should you just use the entity object, and use Include and Exclude to make restrictions on what gets bound on input?

like image 790
zsharp Avatar asked Dec 29 '25 11:12

zsharp


1 Answers

I have come to like the idea of using interfaces to segregate which properties should be included when the object is updated.

For example:

To create and update an person object:

interface ICreatePerson
{
  string Name { get; set; }
  string Sex { get; set; }
  int Age { get; set; }
}

interface IUpdatePerson 
{
  string Name { get; set; }
}

class Person : ICreatePerson, IUpdatePerson
{
  public int Id { get; }
  public string Name { get; set; }
  public string Sex { get; set; }
  public int Age { get; set; }
}

Then, when binding model, just use the appropriate interface as the type and it will only update the name property.

Here is an example controller method:

public ActionResult Edit(int id, FormCollection collection)
{
    // Get orig person from db
    var person = this.personService.Get(id);

    try
    {
        // Update person from web form
        UpdateModel<IUpdatePerson>(person);

        // Save person to db
        this.personService.Update(person);

        return RedirectToAction("Index");
    }
    catch
    {
        ModelState.AddModelErrors((person.GetRuleViolations());

        return View(person);
    }
}

See this article (and the comments) for a very good discussion of the options.

like image 106
Steven Lyons Avatar answered Jan 03 '26 21:01

Steven Lyons



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!