C# 在.NET Core中插入组合框内部视图
我有一个视图页面来插入一些数据 模型如下:C# 在.NET Core中插入组合框内部视图,c#,entity-framework,asp.net-core-mvc,C#,Entity Framework,Asp.net Core Mvc,我有一个视图页面来插入一些数据 模型如下: @model BookListMVC.Models.Book 我需要插入一个链接到另一个表“Categories”的组合框 编译器不允许我插入多个模型,因为这可能不是正确的方法 如何插入链接到“类别”的组合框,指向book“IdCategory” 下面是完整的实际代码: @model BookListMVC.Models.Book <br /> <h2 class="text-info">@(Model.
@model BookListMVC.Models.Book
我需要插入一个链接到另一个表“Categories”的组合框
编译器不允许我插入多个模型,因为这可能不是正确的方法
如何插入链接到“类别”的组合框,指向book“IdCategory”
下面是完整的实际代码:
@model BookListMVC.Models.Book
<br />
<h2 class="text-info">@(Model.Id!=0 ? "Edit" : "Create") Book</h2>
<br />
<div class="border container" style="padding:30px;">
<form method="post">
@if (Model.Id != 0)
{
<input type="hidden" asp-for="Id" />}
<div class="text-danger" asp-validation-summary="ModelOnly"></div>
<div class="form-group row">
<div class="col-3">
<label asp-for="Name"></label>
</div>
<div class="col-6">
<input asp-for="Name" class="form-control" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>
</div>
<div class="form-group row">
<div class="col-3">
<label asp-for="Author"></label>
</div>
<div class="col-6">
<input asp-for="Author" class="form-control" />
<span asp-validation-for="Author" class="text-danger"></span>
</div>
</div>
<div class="form-group row">
<div class="col-3">
<label asp-for="ISBN"></label>
</div>
<div class="col-6">
<input asp-for="ISBN" class="form-control" />
<span asp-validation-for="ISBN" class="text-danger"></span>
</div>
</div>
<div class="form-group row">
<div class="col-3">
<label asp-for="ISBN"></label>
</div>
<div class="col-6">
<input asp-for="ISBN" class="form-control" />
<span asp-validation-for="ISBN" class="text-danger"></span>
</div>
</div>
<div class="form-group row">
<div class="col-3 offset-3">
<button type="submit" class="btn btn-primary form-control">
@(Model.Id != 0 ? "Update" : "Create")
</button>
</div>
<div class="col-3">
<a asp-action="Index" class="btn btn-success form-control">Back to List</a>
</div>
</div>
</form>
</div>
@model BookListMVC.Models.Book
@(Model.Id!=0?“编辑”:“创建”)书本
@如果(Model.Id!=0)
{
}
@(Model.Id!=0?“更新”:“创建”)
返回列表
您可以通过ViewBag或ViewData插入组合框模型。比如说
public IActionResult Index()
{
//The data can be obtained from database.
ViewBag.Categories = new List<SelectListItem>
{
new SelectListItem{ Text="history", Value="1"},
new SelectListItem{ Text="literature", Value="2"},
};
var model = new Book { Id = 2, Author="author", ISBN="isbn", Name="bookname" };
return View(model);
}
结果
您可以在modelBook
中添加属性CategoryId
,甚至可以添加属性Categories
public class Book
{
public int CategoryId { get; set; }
public Categories categories { get; set; }
}
如果要将对象类别传递到bakend,可以添加隐藏的输入框和相关javascript
@section Scripts{
<script>
function changeName() {
var index = document.getElementById("categories").selectedIndex;
var text = document.getElementById("categories").options[index].text;
document.getElementById("categoryName").value=text
}
</script>
}
添加隐藏框
<div class="form-group row">
<div class="col-3">
<label asp-for="categories"></label>
</div>
<div class="col-6">
<select onchange="changeName()" asp-for="categories" name="categories.CategoryId" asp-items="ViewBag.Categories">
<option>-- select the category --</option>
</select>
<input type="hidden" name="categories.CategoryName" value="" id="categoryName"/>
<span asp-validation-for="categories" class="text-danger"></span>
</div>
</div>
--选择类别--
添加javascript
@section Scripts{
<script>
function changeName() {
var index = document.getElementById("categories").selectedIndex;
var text = document.getElementById("categories").options[index].text;
document.getElementById("categoryName").value=text
}
</script>
}
@节脚本{
函数changeName(){
var index=document.getElementById(“类别”)。selectedIndex;
var text=document.getElementById(“类别”).options[index].text;
document.getElementById(“categoryName”).value=text
}
}
然后您可以获得所有数据,包括类别和can处理类别表。谢谢!!如果我有“@model BookListMVC.Models.Book”如何访问表“类别”?C#不允许我在“某些”视图中访问多个“@model”。在当前视图中,您希望在何处访问表类别
?如果你想访问多个“@model
,你需要在每个pameter上添加一些索引,关于这个问题,你可以重新打开一个问题。对不起,我是MVC新手,如果我的模型是“@model BookListMVC.Models.Book”如何访问“Categories”?不清楚什么是“ViewBag.Categories”。我想如果我的模型是@model BookListMVC.Models.Book“我只能访问Book而不能访问其他表。您能更新您的响应吗?每个Book
都有一个外键,您可以将外键传递给bakend,然后您可以根据外键(CategoryId)处理类别。
@section Scripts{
<script>
function changeName() {
var index = document.getElementById("categories").selectedIndex;
var text = document.getElementById("categories").options[index].text;
document.getElementById("categoryName").value=text
}
</script>
}