Сайт asp.net / mvc содержит множество примеров, видео и учебных пособий о MVC, которые стоит прочитать. Вот пример того, как сценарий, о котором вы спрашиваете, может быть реализован:
Модель:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Контроллер:
public class PersonsController: Controller
{
public ActionResult Index()
{
return View(new Person());
}
[HttpPost]
public ActionResult Index(Person person)
{
// The person object here will have it's FirstName
// and LastName properties bound to whatever values
// the user entered in the corresponding textboxes in the form
// TODO: save person to database
// redirect to /home/index
return RedirectToAction("index", "home");
}
}
Вид:
<%@ Page
Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<AppName.Models.Person>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm()) { %>
<div>
<%= Html.LabelFor(x => x.FirstName) %>:
<%= Html.TextBoxFor(x => x.FirstName) %>
</div>
<div>
<%= Html.LabelFor(x => x.LastName) %>:
<%= Html.TextBoxFor(x => x.LastName) %>
</div>
<input type="submit" value="Save" />
<% } %>
</asp:Content>
Теперь вы можете быть удивлены частью TODO. Обычно я создаю хранилище для отделения логики доступа к данным от моего контроллера:
public interface IPersonsRepository
{
void Save(Person person);
}
, а затем использовать конструктор для внедрения этого репозитория в мой контроллер:
public class PersonsController: Controller
{
private readonly IPersonsRepository _repository;
public PersonsController(IPersonsRepository repository)
{
_repository = repository;
}
public ActionResult Index()
{
return View(new Person());
}
[HttpPost]
public ActionResult Index(Person person)
{
// The person object here will have it's FirstName
// and LastName properties bound to whatever values
// the user entered in the corresponding textboxes in the form
// save person to database
_repository.Save(person);
// redirect to /home/index
return RedirectToAction("index", "home");
}
}
Очевидно, теперь последняя оставшаяся часть - это реализация этого репозитория. Это будет зависеть от того, как и где хранятся ваши данные, и от конкретной технологии доступа к данным, которую вы будете использовать. Итак, вы используете реляционную базу данных, обычный текстовый файл, файл XML, объектную базу данных, некоторую базу данных, хранящуюся в облаке, ... как вы собираетесь получить к ней доступ: EF, NHibernate, Linq-to-XML, некоторый REST API ...
Как только вы сделаете свой выбор, вы просто реализуете интерфейс и проинструктируете свою инфраструктуру DI передать правильную реализацию конструктору контроллера.