【问题标题】:MVC Page Model's List Items on Submit to use in Post MethodMVC 页面模型的提交列表项以在 Post 方法中使用
【发布时间】:2020-12-09 20:01:28
【问题描述】:

我有一个在页面加载时创建并填充值的列表。提交页面后,我需要在 post 方法中使用列表中的这些值。

有没有办法为列表项做到这一点?

对于其他领域我这样做:

     < input asp-for="FileID" type="hidden" /> 

但我在模型中有这个列表:

     public List<String> DocumentListing { get; set; }

但是下面的两种尝试都不允许我在提交时看到控制器的 Post 方法中的列表项

int DocumentsCount = Model.DocumentListing.Count();

 for (int i = 0; i < DocumentsCount; i++)
{
    Model.DocumentListing.Add(Model.DocumentListing.ElementAtOrDefault(i));

    <input asp-for="DocumentListing.ElementAtOrDefault(i)" type="hidden">
}

有人可以帮忙吗?

【问题讨论】:

    标签: html forms asp.net-core-mvc


    【解决方案1】:

    根据doc

    如果你想接受列表,请求数据应该是DocumentListing[0],DocumentListing[1]...

    以下示例:

    <form method="post">
    
        <input asp-for="FileID" type="hidden" />
    
        @for (int i = 0; i < Model.DocumentListing.Count(); i++)
        {
            <input asp-for="DocumentListing[i]" type="text">
        }
        <input type="submit" value="submit" class="btn btn-danger" />
    </form>
    

    控制器:

    public IActionResult Index()
    {
        var test = new Test
        {
            FileID = 1,
            DocumentListing = new List<string> { "A", "B", "C" }
        };
    
        return View(test);
    }
    
    [HttpPost]
    public IActionResult Index(Test test)
    {
            
        return View(test);
    }
    

    结果:

    【讨论】:

    • 这确实有效。当然,我修改了我真正想要使其成为字符串列表而不是自定义列表对象的内容。所以这不适用于自定义对象,但它适用于我的要求。我将为自定义对象列表提出一个单独的问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    相关资源
    最近更新 更多