在PartialView ASP.NET Core中显示<select>值

时间:2018-12-21 16:04:16

标签: c# asp.net asp.net-mvc asp.net-core

我将项目从ASP.NET MVC迁移到ASP.NET Core 我有两个daropdowns的局部视图 所以Controller方法就是这样  公共ActionResult AddPeopleToProposal()     {         ViewBag.Worker = new SelectList(db.People,“ Id”,“ FIO”)。ToList();         ViewBag.Proposal = new SelectList(db.Proposals,“ Id”,“ Id”)。ToList();         返回PartialView(“ AddPeopleToProposal”);     } 在View中,我是这样渲染的
    
        
            
Добавитьработниканазаявку
                     
        
            @ Html.Action(“ AddPeopleToProposal”,“ Manage”)         
        
                                  
    
和局部视图 <表格>
         @ Html.DropDownList(“ Worker”,null,“ XXXX”,htmlAttributes:new {@class =“ form-control”,@id =“ peopleIdAdd”})
         @ Html.DropDownList(“ Proposal”,null,“ XXXX”,htmlAttributes:new {@class =“ form-control”,@id =“ proposalIdAdd”})
         
但据我所知@ Html.Action被贬低了 我像这样在Core中意识到这一点 控制者 公共ActionResult AddPeopleToProposal()     {         ViewData [“ Worker”] = new SelectList(_context.People,“ Id”,“ FIO”);         ViewData [“ Proposal”] = new SelectList(_context.Proposals,“ Id”,“ Id”);         返回PartialView(“ Partials / AddPeopleToProposal”);     } 和局部视图 <表格>     
                      
    
                      
    
                      
从我局部校准的地方查看
    
        
            
Добавитьработниканазаявку
                     
        
            @ Html.Partial(“ Partials / AddPeopleToProposal”)         
        
                                  
    
但是在Core中,select没有值。我的问题在哪里?

1 个答案:

答案 0 :(得分:0)

如果要在获取部分视图时直接初始化页面,请尝试将以下两行代码放入部分视图主视图的get请求中。 More关于部分视图

ViewData["Worker"] = new SelectList(_context.People, "Id", "FIO");
ViewData["Proposal"] = new SelectList(_context.Proposals, "Id", "Id");

或者您可以使用ViewComponent而不是Partial View从视图组件类中的Invoke方法获取下拉列表的填充数据。尝试使用下面的代码

ViewComponent.cs

 public class AddPeopleToCountryViewComponent:ViewComponent
{
    private readonly MVCDbContext _context;

    public AddPeopleToCountryViewComponent(MVCDbContext context)
    {
        _context = context;
    }

    public async Task<IViewComponentResult> InvokeAsync(
    int maxPriority, bool isDone)
    {
        ViewData["Customer"] = new SelectList(_context.Customer, "Id", "Name");
        ViewData["Country"] = new SelectList(_context.Country, "Id", "Id");
        return View();
    }
}

ViewComponent的Default.cshtml

<form>
<div class="form-group">
    <label class="col-form-label">People</label>
    <select class="form-control" asp-items="@ViewBag.Customer"></select>
</div>
<div class="form-group">
    <label class="col-form-label">Country</label>
    <select class="form-control" asp-items="@ViewBag.Country"></select>
</div>
<div class="form-group">
    <label class="col-form-label">Comment</label>
    <input type="text" class="form-control" id="commentVchasno">
</div>

代替主视图模式中的PartialView

<div class="modal-body">
     @await Component.InvokeAsync("AddPeopleToCountry", new {  })
 </div>