ASP.NET Core MVC Interview Question #173
How should client-side JavaScript and server-side MVC responsibilities be separated?
Testing, AJAX/JavaScript Integration, Localization & Advanced MVC Senior Advanced
Quick Interview Answer
The server remains responsible for authentication, authorization, validation, business rules, persistence, and trusted state transitions. JavaScript can improve interaction by submitting requests asynchronously, updating DOM elements, and performing convenience validation, but client behavior cannot be trusted as enforcement.
Detailed Explanation
The server remains responsible for authentication, authorization, validation, business rules, persistence, and trusted state transitions. JavaScript can improve interaction by submitting requests asynchronously, updating DOM elements, and performing convenience validation, but client behavior cannot be trusted as enforcement.
Define clear request and response contracts. Avoid duplicating complex business rules in JavaScript and C# unless there is a deliberate strategy for keeping them consistent.
Code Example
// Client-side convenience:
if (!form.checkValidity())
return;
// Server-side authority:
if (!ModelState.IsValid)
return View(model);