【问题标题】:Binding multiple list items on post in Razor Pages在 Razor 页面中绑定多个列表项
【发布时间】:2021-05-15 18:11:06
【问题描述】:

我想绑定一个在帖子上有多个列表项的表单,下面是我的代码:

   <form asp-page-handler="InsertAssignedStates" method="post">
           name="assignedStates" />
                <div class="row">
                    <div class="dual-list list-left col-md-5">
                        <div class="well text-right">
                            <select asp-for="Stest"
                                    multiple="multiple"
                                    size="10"
                                    class="form-control mb-2 mr-sm-2 ml-sm-3 leftList"
                                    id="assignedStateList"
                                    asp-items="@Model.AssignedTaxStateList">
                            </select>
                        </div>
                    </div>

我在页面模型中有这个:

 [BindProperty(SupportsGet = true)]
 public IList<Tax> AssignedTaxStates { get; set; }
 public IActionResult OnPostInsertAssignedStates()
    {
  
     return Redirect("Index/");
    }

它到达断点但没有被绑定。

【问题讨论】:

    标签: asp.net-mvc asp.net-core .net-core razor razor-pages


    【解决方案1】:

    Asp.net core 用name属性绑定数据。这里有一个demo,用list绑定输入,在razor pages里用list绑定多选。

    型号:

    public class Tax
        {
            public int Id { get; set; }
            public string Name { get; set; }
    
        }
    

    cshtml:

    <form asp-page-handler="InsertAssignedStates" method="post">
        <div class="row">
            <div class="dual-list list-left col-md-5">
                <div class="well text-right">
                    <select asp-for="Stest"
                            multiple="multiple"
                            size="10"
                            class="form-control mb-2 mr-sm-2 ml-sm-3 leftList"
                            id="assignedStateList"
                            asp-items="@Model.AssignedTaxStateList">
                    </select>
                </div>
                @{ var i = 0;}
                @foreach (var item in Model.AssignedTaxStates)
                { 
                    <div class="well text-right">
                        <input value="@item.Id"  name="AssignedTaxStates[@i].Id"/>
                        <input value="@item.Name" name="AssignedTaxStates[@i].Name"/>
    
                    </div>
                    i++;
                }
            </div>
        </div>
        <input type="submit" value="submit" />
    </form>
    

    cshtml.cs:

    public class TestModel : PageModel
        {
            [BindProperty]
            public List<SelectListItem> AssignedTaxStateList { get; set; }
            [BindProperty]
            public IList<Tax> AssignedTaxStates { get; set; }
            [BindProperty]
            public List<string> Stest { get; set; }
            public void OnGet()
            {
                AssignedTaxStateList = new List<SelectListItem> { new SelectListItem { Text = "1", Value = "1" }, new SelectListItem { Text = "2", Value = "2" } };
                AssignedTaxStates = new List<Tax> { new Tax { Id = 1, Name = "tax1" }, new Tax { Id = 2, Name = "tax2" }, new Tax { Id = 3, Name = "tax3" } };
            }
    
            public IActionResult OnPostInsertAssignedStates()
            {
    
                return Redirect("Index/");
            }
        }
    

    结果:

    【讨论】:

    • 你指的是哪一天?
    • 哦,这是我的错误,我是说数据。
    猜你喜欢
    • 2019-03-12
    • 2020-07-02
    • 1970-01-01
    • 2021-05-26
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    相关资源
    最近更新 更多