C# ASP核心剃须刀语法@for->;具有不同输入的多个子按钮?

C# ASP核心剃须刀语法@for->;具有不同输入的多个子按钮?,c#,asp.net-core,razor-pages,C#,Asp.net Core,Razor Pages,我正在尝试用Razorpages创建一个ASP核心应用程序 到目前为止,一切正常,但现在我遇到了这个问题: 我想基于Objectarray创建一个具有多个按钮的表单。每个按钮都有自己的名称,应该调用相同的OnPost方法。到现在为止,一直都还不错。我很难用表单发布正确的对象 这里有一些代码 Test.cshtml: @page @using APP.Models @model TestModel @{ ViewData["Title"] = "Test"; Layout = "~

我正在尝试用Razorpages创建一个ASP核心应用程序

到目前为止,一切正常,但现在我遇到了这个问题:

我想基于Objectarray创建一个具有多个按钮的表单。每个按钮都有自己的名称,应该调用相同的OnPost方法。到现在为止,一直都还不错。我很难用表单发布正确的对象

这里有一些代码

Test.cshtml:

@page
@using APP.Models
@model TestModel
@{
    ViewData["Title"] = "Test";
    Layout = "~/Pages/Shared/_Layout.cshtml";

    var bereiche = Bereich.getBereiche();
}


<div class="grid">
    <h1 class="center-text">@ViewData["Title"]</h1>
    <form method="post" class="center">
        <div class="form-group">
            <label asp-for="Model" class="col-form-label"></label>
            <div class="button-group-vertical">

                @for (var i = 0; i < bereiche.Count; i++)
                {
                    <input type="hidden" asp-for="Model" value="@bereiche[i]" />
                    <button class="btn btn-info btn-md button-group-vertical-item">@bereiche[i].name</button>
                }

            </div>
        </div>
    </form>
</div>

有人知道我做错了什么吗?

为了回传对象,可以对每个对象使用一种形式,命名字段与对象属性名称对应

请尝试以下方法:

  @for (var i = 0; i < bereiche.Count; i++)
{
    <form method="post" class="center">
        <input name="art" type="hidden" value="@bereiche[i].art" />
        <button name="name" value="@bereiche[i].name" class="btn btn-info">@bereiche[i].name</button>
    </form>
}
(变量i=0;i
另外,如果您希望按钮保存一个值,则需要像我在示例中所做的那样将该值放入值标记中。

为了回发一个对象,可以对每个对象使用一个表单,命名字段与对象属性名称对应

请尝试以下方法:

  @for (var i = 0; i < bereiche.Count; i++)
{
    <form method="post" class="center">
        <input name="art" type="hidden" value="@bereiche[i].art" />
        <button name="name" value="@bereiche[i].name" class="btn btn-info">@bereiche[i].name</button>
    </form>
}
(变量i=0;i
此外,如果您希望按钮保存一个值,则需要像我在示例中所做的那样将该值放入值标记中。

模型是
{art=Mitte,name=null}
,因为这是
Bereich
模型中这些属性的两个默认值。你不应该试图发布复杂的对象;这通常会失败。相反,在表单中发布一些标识符,然后使用该标识符在服务器上解析正确的
Bereich
对象。@poke好的,我想还有其他方法,但谢谢。我在Bereich-class中添加了一个ID,并将我的按钮更改为如下内容:@item.name在PageModel中我查找发布的ID并获取相应的Bereich对象模型是
{art=Mitte,name=null}
,因为这是
Bereich
模型中那些属性的两个默认值。你不应该试图发布复杂的对象;这通常会失败。相反,在表单中发布一些标识符,然后使用该标识符在服务器上解析正确的
Bereich
对象。@poke好的,我想还有其他方法,但谢谢。我在Bereich-class中添加了一个ID,并将我的按钮更改为如下内容:@item.name在PageModel中,我会查找发布的ID并获取相应的Bereich对象OK这将在该范围内起作用,但我想将多个对象添加到我已经拥有的表单中。如果我做多个表单,这会弄乱我的布局。我将接受@pokeOk的awnser,这将在这个范围内起作用,但我想将多个对象添加到我已经拥有的表单中。如果我做多个表单,这会弄乱我的布局。我将接受@poke的awnser
  @for (var i = 0; i < bereiche.Count; i++)
{
    <form method="post" class="center">
        <input name="art" type="hidden" value="@bereiche[i].art" />
        <button name="name" value="@bereiche[i].name" class="btn btn-info">@bereiche[i].name</button>
    </form>
}