Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller 视图在MVC中不返回post上的模型数据_Model View Controller_Asp.net Core Mvc - Fatal编程技术网

Model view controller 视图在MVC中不返回post上的模型数据

Model view controller 视图在MVC中不返回post上的模型数据,model-view-controller,asp.net-core-mvc,Model View Controller,Asp.net Core Mvc,我不熟悉MVC和ASP.NETCore。我正在尝试做一个页面,用户可以从下拉列表中为工单分配员工id。一切看起来都很好,我在视图中获得了数据,但当我按下assign按钮时,我在HTTPPOST中没有在模型中获得任何数据 视图模型 namespace AVI_IT.ViewModels { 公共类AdminPageViewModel { 公共字典dict{get;set;} } } 控制器 public class AdminPageController : Controller {

我不熟悉MVC和ASP.NETCore。我正在尝试做一个页面,用户可以从下拉列表中为工单分配员工id。一切看起来都很好,我在视图中获得了数据,但当我按下assign按钮时,我在HTTPPOST中没有在模型中获得任何数据

视图模型

namespace AVI_IT.ViewModels
{ 公共类AdminPageViewModel {

公共字典dict{get;set;}
}
}

控制器

public class AdminPageController : Controller
{
    private readonly AvivDataContext _db;

    public AdminPageController(AvivDataContext db)
    {
        this._db = db;
    }
   
    public IActionResult Index()
    {
        AdminPageViewModel thisViewModel = new AdminPageViewModel();
        var employeeList = new List<SelectListItem>();
        var dict = new Dictionary<int, List<SelectListItem>>();


        foreach (Employee employee in _db.employee)
        {
            SelectListItem item = new SelectListItem();
            item.Value = employee.employeeID.ToString();
            item.Text = employee.employeeID.ToString();
            employeeList.Add(item);
        }
        foreach (HelpDeskViewModel helpDesk in _db.helpdesk)
        {
            if (helpDesk.empID == null)
            {
                thisViewModel.dict = dict;
                if(!dict.ContainsKey(helpDesk.ticketID))
                thisViewModel.dict.Add(helpDesk.ticketID, employeeList);
            }
        }


        return View(thisViewModel);
    }
    [HttpPost]
    public IActionResult Index(AdminPageViewModel thisViewModel)
    {
        if (!ModelState.IsValid)
        {
            return View(thisViewModel);
        }

        return RedirectToAction("Index");
    }
公共类AdminPageController:控制器
{
私有只读AvivDataContext _db;
公共AdminPageController(AvivDataContext数据库)
{
这个。_db=db;
}
公共IActionResult索引()
{
AdminPageViewModel thisViewModel=新的AdminPageViewModel();
var employeeList=新列表();
var dict=新字典();
foreach(员工在_db.Employee中)
{
SelectListItem=新建SelectListItem();
item.Value=employee.employeeID.ToString();
item.Text=employee.employeeID.ToString();
员工列表。添加(项目);
}
foreach(HelpDeskViewModel helpDesk位于_db.helpDesk中)
{
if(helpDesk.empID==null)
{
thisViewModel.dict=dict;
如果(!dict.ContainsKey(helpDesk.ticketID))
thisViewModel.dict.Add(helpDesk.ticketID,employeeList);
}
}
返回视图(thisViewModel);
}
[HttpPost]
公共IActionResult索引(AdminPageViewModel thisViewModel)
{
如果(!ModelState.IsValid)
{
返回视图(thisViewModel);
}
返回操作(“索引”);
}
看法

@model AVI_IT.ViewModels.AdminPageViewModel
@使用(Html.BeginForm())
{
@ActionLink(“创建角色”、“创建角色”,
“管理”)
管理
角色
车票号码
指派员工
@foreach(Model.dict中的var票据)
{
@票,钥匙
@Html.DropDownListFor(Model=>ticket.Value,new SelectList(ticket.Value,
“值”、“文本”)、“分配员工”、新的{@class=“表单控制”})
}
分配
}

我被困在这里,任何帮助都将不胜感激。谢谢您可以尝试将
公共字典SelectedICT{get;set;}
添加到您的
AdminPageViewModel
,并将所选数据传递到
SelectedICT
。下面是一个演示:

型号:

public class AdminPageViewModel {
        public Dictionary<int, List<SelectListItem>> dict { get; set; }
        public Dictionary<int, string> selecteddict { get; set; }
    }
行动:

public IActionResult TestDict(AdminPageViewModel m)
        {
            AdminPageViewModel m1 = new AdminPageViewModel
            {
                dict = new Dictionary<int, List<SelectListItem>>()
            {
                { 0,new List<SelectListItem> { new SelectListItem {  Value="01",Text="0one"},new SelectListItem {  Value="02",Text="0two"} ,new SelectListItem {  Value="03",Text="0three"}}},
                { 1,new List<SelectListItem> { new SelectListItem {  Value="11",Text="1one"},new SelectListItem {  Value="12",Text="1two"} ,new SelectListItem {  Value="13",Text="1three"}}},
                { 2,new List<SelectListItem> { new SelectListItem {  Value="21",Text="2one"},new SelectListItem {  Value="22",Text="2two"} ,new SelectListItem {  Value="23",Text="2three"}}},

            }
            };
            return View(m1);

        }
public IActionResult TestDict(AdminPageViewModel m)
{
AdminPageViewModel m1=新的AdminPageViewModel
{
dict=新字典()
{
{0,新列表{new SelectListItem{Value=“01”,Text=“0one”},新SelectListItem{Value=“02”,Text=“0two”},新SelectListItem{Value=“03”,Text=“0three”},
{1,新列表{new SelectListItem{Value=“11”,Text=“1one”},新SelectListItem{Value=“12”,Text=“1two”},新SelectListItem{Value=“13”,Text=“1three”},
{2,新列表{new SelectListItem{Value=“21”,Text=“2one”},新SelectListItem{Value=“22”,Text=“2two”},新SelectListItem{Value=“23”,Text=“2Tree”},
}
};
返回视图(m1);
}
结果:

谢谢@Yiyi You,这帮了我很大的忙。我设法在帖子中获得了所需的数据。谢谢你的帮助。现在转到下一期更新数据库中的数据:)
public class AdminPageViewModel {
        public Dictionary<int, List<SelectListItem>> dict { get; set; }
        public Dictionary<int, string> selecteddict { get; set; }
    }
<fieldset>
    @using (Html.BeginForm())
    {
        <form method="post">
            <table align="center">
                <tr>
                    <td>
                        <button class=" btn btn-primary">
                            @Html.ActionLink("Create Role", "CreateRole",
"Administration")
                        </button>
                    </td>
                    <td>
                        <button class=" btn btn-primary" asp-action="Index" asp-controller="UserRoles">
                            Manage
                            Roles
                        </button>
                    </td>
                </tr>
            </table>
            <table class="table table-striped">
                <thead>
                    <tr>
                        <th>Ticket Number</th>
                        <th>Assign Employee</th>
                    </tr>
                </thead>

                @foreach (var ticket in Model.dict)
                {
                    <tr>
                        <td>@ticket.Key</td>
                        <td>
                            <select class="form-control" id="ticket_Value" name="selecteddict[@ticket.Key]" asp-items=@ticket.Value>
                                <option value="">Assign Employee</option>    
                            </select>
                        </td>


                    </tr>
                }
                <tr><td><button type="submit" class="btn btn-primary form-control">Assign</button></td></tr>
            </table>
        </form>
    }

</fieldset>
public IActionResult TestDict(AdminPageViewModel m)
        {
            AdminPageViewModel m1 = new AdminPageViewModel
            {
                dict = new Dictionary<int, List<SelectListItem>>()
            {
                { 0,new List<SelectListItem> { new SelectListItem {  Value="01",Text="0one"},new SelectListItem {  Value="02",Text="0two"} ,new SelectListItem {  Value="03",Text="0three"}}},
                { 1,new List<SelectListItem> { new SelectListItem {  Value="11",Text="1one"},new SelectListItem {  Value="12",Text="1two"} ,new SelectListItem {  Value="13",Text="1three"}}},
                { 2,new List<SelectListItem> { new SelectListItem {  Value="21",Text="2one"},new SelectListItem {  Value="22",Text="2two"} ,new SelectListItem {  Value="23",Text="2three"}}},

            }
            };
            return View(m1);

        }