Прежде всего, вы можете использовать Http декораторы в вашем контроллере.
[HttpGet]
public IActionResult CreateProjectView()
{
return View();
}
[HttpPost]
public IActionResult CreateProject(Project model)
{
try
{
// This should be your repository.
var DB = new IRISInSiteLiveEntities();
var newProject = new Project
{
ProjectName = model.ProjectName
};
DB.Projects.Add(newproject);
DB.SaveChanges();
return RedirectToAction("CreateProjectView");
}
catch(Exception ex)
{
throw ex;
}
}
И ваш взгляд должен быть примерно таким (это только ваша часть):
@model IRIS.Models.Project
<form asp-controller="Operations" asp-action="CreateProject" id="operationsForm" method="post">
@Html.AntiForgeryToken()
<div class="form-group">
<label asp-for="ProjectName">Project Name</label>
<input asp-for="ProjectName" class="form-control" />
</div>
<div class="form-group">
<label asp-for="NetworkOperator">NetworkOperator</label>
</div>
...
<div class="form-group">
<input id="submit" type="submit" value="Create" class="btn btn-default">
</div>
</form>
Теперь я точно не помню, но это вроде "новее"синтаксис бритвы (я не использую бритву).Это больше похоже на HTML и намного чище.Для этого вам придется поискать в Интернете.
То, что вы также должны посмотреть, это Шаблон репозитория .Я полагаю, что IRISInSiteLiveEntities
является вашим хранилищем.Это должно реализовать метод, подобный CreateProject()
, чтобы вы не писали напрямую с вашего контроллера - это не работа контроллера.
Итак, ваш контроллер должен выглядеть примерно так:
private readonly IRISInSiteLiveEntities m_siteLiveEntities;
[HttpGet]
public IActionResult CreateProjectView()
{
return View();
}
[HttpPost]
public IActionResult CreateProject(Project model)
{
try
{
var newProject = new Project
{
ProjectName = model.ProjectName
};
m_siteLiveEntities.CreateProject(newProject);
return RedirectToAction("CreateProjectView");
}
catch(Exception ex)
{
throw ex;
}
}
И снова ищите Дизайн архитектуры MVC , Шаблон репозитория и даже Чистая архитектура (Onion Architecture) .