asp.net 如何在Razor中添加新的SelectListItem对象

new9mtju  于 2023-11-20  发布在  .NET
关注(0)|答案(1)|浏览(141)

基于按钮单击添加新的SelectListItem选项的最理想方式是什么?
最佳实践是什么?我考虑了以下几个选项,并想知道它们是否是理想的。复制一个预先存在的行并为其分配一个新的ID是一个值得的方法吗?也许是一个局部视图?
有没有人想到最好的实践方法来做到这一点?我希望避免大量使用jQuery,也许只是执行基本功能,而不是让c#和.net处理更多的工作。

kulphzqa

kulphzqa1#

您可能需要逐个绑定selectlist值以发布旧列表。您可以尝试以下示例:
Itemlist.cs

public class Itemlist
    {
        public string Text { get; set; }
        public string Value { get; set; }
    }

字符串
IndexViewModel.cs

public class IndexViewModel
    {
        public string Selected { get; set; }
        public List<Itemlist> List1 { get; set; }
    }


HomeController

public IActionResult Index(IndexViewModel? model)
        {
            if (model.List1 == null)
            {
                model = new IndexViewModel()
                {
                    List1 = new List<Itemlist>()
                        {
                                new Itemlist { Text = "Physics", Value = "Physics" },
                                new Itemlist { Text = "Maths", Value = "Maths" },
                        }
                };
            }
            return View(model);
        }

        public IActionResult AddSelect(IndexViewModel model,string newOption)
        {
            if (!model.List1.Any(x => x.Text == newOption)&&(newOption!=null))
            {
                model.List1.Add(new Itemlist { Text = newOption, Value = newOption });
            }
            return View("Index", model);
        }


Index.cshtml

@model IndexViewModel

<form asp-controller="home">

    <select asp-for="Selected" asp-items="@(new SelectList(Model.List1, "Value", "Text"))"></select>

    new option: <input name="newOption" />

    @for(int i = 0; i < Model.List1.Count; i++)
    {
        <input type="hidden" asp-for="@Model.List1[i].Text" />
        <input type="hidden" asp-for="@Model.List1[i].Value" />
    }     

    <input type="submit" asp-action="AddSelect" value="Add Option"/>   
    <input type="submit" value="Submit Select" />

</form>
    You Select:  @Model.Selected


测试


的数据

相关问题