C# ASP核心剃须刀语法@for->;具有不同输入的多个子按钮?
我正在尝试用Razorpages创建一个ASP核心应用程序 到目前为止,一切正常,但现在我遇到了这个问题: 我想基于Objectarray创建一个具有多个按钮的表单。每个按钮都有自己的名称,应该调用相同的OnPost方法。到现在为止,一直都还不错。我很难用表单发布正确的对象 这里有一些代码 Test.cshtml: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 = "~
@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>
}