Возможно, мне понадобится дополнительная информация, чтобы помочь. Если вы используете ef-миграции и у вас уже есть Модель, например, под названием Product, но обратите внимание на базу данных, выполните следующие действия:
- Добавить аннотации данных на вашу модель. Например. [Key] для ProductID, [Display (Name = "Введите код продукта")] для кода продукта и т. Д.
- Вам необходимо добавить DbContext. Если нет, то вам нужно выбрать базу данных, SQLite или SQL Server, добавить соединение с базой данных. В следующих двух строках будет сгенерирована таблица с использованием терминала, если вы используете VSCode.
dotnet ef migrations add InitialCreated --output-dir Migrations --context YourDbContext
dotnet ef database update --context YourDbContext
- Затем вам нужно создать ProductsController и Views (Create and Index)
Самый простой способ автоматически сгенерировать ваш контроллер и представления - это установить dotnet-aspnet-codegenerator. используйте эту команду для установки:
dotnet tool install dotnet-aspnet-codegenerator
Теперь убедитесь, что следующие строки добавлены в ваш файл csproj.
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
- запустить aspnet-кодогенератор
dotnet aspnet-codegenerator controller -name ProductsController -m Product -dc YourDbContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries
- Перейдите в ProductsController и найдите следующий код:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(
- Чтобы вызвать Create.cshtml из любого места, оно должно выглядеть примерно так:
<a asp-action="Create" asp-controller="Products" method="post" >Create New</a>
Внимание! Продукты не имеют рабочего контроллера после него.
Ниже приведен пример веб-страницы Create.cshtml
@model test_mvc_webapp.Models.Product
@{
ViewData["Title"] = "Create";
}
<h1>Create</h1>
<h4>Product</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-controller="Products" asp-action="Create" method="post" enctype="multipart/form-data">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="ProductCode" class="control-label"></label>
<input asp-for="ProductCode" class="form-control" />
<span asp-validation-for="ProductCode" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="ProductType" class="control-label"></label>
<input asp-for="ProductType" class="form-control" />
<span asp-validation-for="ProductType" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Description" class="control-label"></label>
<input asp-for="Description" class="form-control" />
<span asp-validation-for="Description" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Back to List</a>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
Дайте мне знать, помогло ли это?