我希望部分视图基于传递的值id
这是将值传递给部分视图的方式:
@Html.Partial("_Customer", "123")
从_Customer
局部视图中,我希望它访问我创建的sql server视图
+-----+------+-----+
| Id | Name | Age |
+-----+------+-----+
| 122 | Jim | 35 |
+-----+------+-----+
| 123 | Elon | 47 |
+-----+------+-----+
抓住名称和年龄,并将其显示在部分视图输入框中。
想知道是否有简单的方法吗?
答案 0 :(得分:1)
您可以编写服务并在局部视图中注入,例如-
服务
public interface IUserInfo
{
User GetUserInforById(int id);
}
public class UserInfo : IUserInfo
{
private readonly MyDbContext _cotext;
// Inject DbContext
public UserInfo(MyDbContext dbContext)
{
_cotext = dbContext;
}
public User GetUserInforById(int id)
{
return _cotext.Users.Single(i => i.Id == id);
}
}
局部视图
@inject SeedSample.Services.IUserInfo UserInfo
@{
var information = UserInfo.GetUserInforById(Model.Id);
}
@*write your html code*@
答案 1 :(得分:1)
视图组件类似于部分视图,但功能更强大。视图组件不使用模型绑定,而仅依赖于调用模型时提供的数据。
请参阅以下步骤:
1。在根目录中创建的CustomerDetailsViewComponent
文件夹中创建ViewComponents
类
public class CustomerDetailsViewComponent:ViewComponent
{
private readonly MVCDbContext _context;
public CustomerDetailsViewComponent(MVCDbContext context)
{
_context = context;
}
public async Task<IViewComponentResult> InvokeAsync(int customerId)
{
var model = await _context.Customer.FindAsync(customerId);
return View(model);
}
}
2。 View组件搜索路径:/Views/Shared/Components/CustomerDetails/Default.cshtml
,视图组件的默认视图名称为Default,这意味着您的视图文件通常将命名为Default.cshtml。创建视图组件结果或调用View方法时,可以指定其他视图名称。
@model TestProject.Models.Customer
<div class="row">
<div class="col-md-4">
<form asp-action="Edit">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="Id" />
<div class="form-group">
<label asp-for="Name" class="control-label"></label>
<input asp-for="Name" class="form-control" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Age" class="control-label"></label>
<input asp-for="Age" class="form-control" />
<span asp-validation-for="Age" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</form>
</div>
</div>
3。要使用视图组件,请在视图内部调用以下内容:
@await Component.InvokeAsync("CustomerDetails", new { customerId= 123})
有关View组件的更多详细信息,您可以参考此official documentation