繁体   English   中英

将选择列表项中的值保存到视图模型

[英]Saving values from selectlistitem to viewmodel

我对 selectListItem 类有问题。
(我可以将数据加载到表单中的列表项,但在提交时不能只保存列表项中的数据)视图模型。
这是一些代码:
视图模型的属性

[Required]
public int PoslovnicaID { get; set; }
[Required(ErrorMessage = "Polje je obavezno.")]
public List<SelectListItem> poslovnice { get; set; }

视图中的代码

<div class="col-md-12 form-group">
  <label asp-for="poslovnice">Odabir poslovnice</label>
  <select name=""
    asp-for="PoslovnicaID"
    asp-items="poslovnice"
    class="form-control">
    <option selected disabled>Odabir poslovnice</option>
  </select>
</div>

你能告诉我我是否遗漏了一些明显的东西吗
我感谢任何帮助

模型绑定基于 name 属性。 您应该删除 select 标签中的name="" ,因为asp-for="PoslovnicaID"会将其呈现为name="PoslovnicaID"

另外,表单只会提交selected option(PoslovnicaID)的值,会在ViewModel中绑定PoslovnicaID ,所以poslovnice为null,应该为null。

一个简单的测试:

public IActionResult Index()
{
    ViewModel viewModel = new ViewModel
    {
        PoslovnicaID = 1,
        poslovnice = new List<SelectListItem> 
        { 
            new SelectListItem{ Text = "AAA", Value = "1"},
            new SelectListItem{ Text = "BBB", Value = "2"},
            new SelectListItem{ Text = "CCC", Value = "3"},
        }

    };
    return View(viewModel);
}

[HttpPost]
public IActionResult Edit(ViewModel viewModel)
{
        
    return View();
}

看法:

@model ViewModel
@{
    ViewData["Title"] = "Index";
}

<h1>Index</h1>

<form asp-action="Edit" method="post">
    <div class="col-md-12 form-group">
        <label asp-for="poslovnice">Odabir poslovnice</label>
        <select name="poslovnice"
                asp-for="PoslovnicaID" 
                asp-items="Model.poslovnice"
                class="form-control">
            <option selected disabled>Odabir poslovnice</option>
        </select>
    </div>

    <input type="submit" value="submit" class="btn btn-danger" />
</form>

结果:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM