gpt4 book ai didi

c# - 如何在 Razor 代码中的 ASP.NET-MVC-5 中为强类型数据模型列表取多个值

转载 作者:行者123 更新时间:2023-11-30 18:24:00 25 4
gpt4 key购买 nike

我有强类型 View 模型,我需要为强类型列表的用户获取“列表”的多条记录。我正在努力在 Razor 代码中实现这一点。这是 [httpget] 方法。

查看模型

public class AccommodationApplicationViewModel
{
public AccommodationApplicationViewModel()
{
_RentingApplicationModel = new PropertyRentingApplication();
_PropertyRentingPriceModel = new List<PropertyRentingPrice>();
_AdditionalTenantModel = new List<AdditionalTenant>();
_StudentLimitedInfoModel = new List<StudentLimitedInfo>();
}

public PropertyRentingApplication _RentingApplicationModel { get; set; }

public List<PropertyRentingPrice> _PropertyRentingPriceModel { get; set; }
public List<AdditionalTenant> _AdditionalTenantModel { get; set; }
public List<StudentLimitedInfo> _StudentLimitedInfoModel { get; set; }

}

Razor 代码

<div>
<div class="form-group">
@Html.LabelFor(model => model._StudentLimitedInfoModel[0].StudentNumber_UWLID, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
//@Html.EditorFor(model => model._StudentLimitedInfoModel[0].StudentNumber_UWLID, new { htmlAttributes = new { @class = "form-control", @readonly = "readonly" } })
@Html.ValidationMessageFor(model => model._StudentLimitedInfoModel[0].StudentNumber_UWLID, "", new { @class = "text-danger" })*@
</div>
</div>

我在下一行中遇到错误

@Html.EditorFor(model => model._StudentLimitedInfoModel[0].StudentNumber_UWLID, new { htmlAttributes = new { @class = "form-control", @readonly = "readonly" } })

错误是:

Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

最佳答案

您可以采用以下两种方法之一。如果列表的项数是固定的,您只需使用适当数量的实例对其进行初始化即可。例如:

_PropertyRentingPriceModel = new List<PropertyRentingPrice>
{
new PropertyRentingPrice(),
new PropertyRentingPrice(),
new PropertyRentingPrice()
};

那会给你三个项目。那么,在你看来:

@for (var i = 0; i < Model._PropertyRentingPriceModel.Count(); i++)
{
@Html.EditorFor(m => m._PropertyRentingPriceModel[i].Foo)
}

如果项目更流畅,或者用户需要能够随意添加或删除项目,您将需要一个 JavaScript 解决方案,这将涉及创建输入并手动为它们分配适当的名称。为此,我建议使用某种支持模板的数据绑定(bind)库,例如 Knockout 或 Angular。这样做会让您的生活变得更轻松。构建 JavaScript 模板时,您只需记住模型绑定(bind)器希望在您的 POST 请求中看到的集合输入名称的约定:CollectionProperty[Index].Property。例如,您的输入需要类似于:

<input type="text" name="_PropertyRentingPriceModel[0].Foo" value="" />

关于c# - 如何在 Razor 代码中的 ASP.NET-MVC-5 中为强类型数据模型列表取多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31748354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com