When to use BindAttribute?

Viewed 5583

I'm learning asp.net mvc and wonder when we need to use BindAttribute.

The first case (using Bind):

Model:

public class Book
{
    public string Id { get; set; }

    public string Name { get; set; }

    public string Author { get; set; }
}

Controller:

public IActionResult Create([Bind(nameof(Book.Name), nameof(Book.Author))] Book model)
{
    return Ok();
}

The book Id would be generated on server side. So, client side has nothing to do with it, every actions try to change/make the id is prevented.

The second case (not using Bind):

Model:

public class BookViewModel
{
    public string Name { get; set; }

    public string Author { get; set; }
}

Controller:

public IActionResult Create(BookViewModel model)
{
    return Ok();
}

Because the second model doesn't contain Id property, we don't need to prevent from creating or changing.

I prefer the second. It's easy to manage model.

Is there a case we must use Bind attribute?

2 Answers
Related