我想动态设置我在ASP.Net Core表单上输入的数据,包含不同的描述和数据类型。
我最初的想法是创建以下层次结构,在模型中保留IInputModel
项列表,并为每个项生成局部视图:
public interface IInputModel
{
string Description { get; set; }
}
public interface IInputModel<T> : IInputModel
{
T Value { get; set; }
}
public class InputModelBase<T> : IInputModel<T>
{
public T Value { get; set; }
public string Description { get; set; }
}
public class SingleLineTextInputModel : InputModelBase<string>
{
}
以下是我的部分视图示例:
@using Microsoft.EntityFrameworkCore.Metadata.Internal
@model WebTranslator.Models.InputModels.SingleLineTextInputModel
<div>
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label class="col-md-2 control-label">@Model.Description</label>
<div class="col-md-10">
<input asp-for="Value" class="form-control"/>
<span asp-validation-for="Value" class="text-danger" />
</div>
</div>
</div>
但是,我注意到Asp.Net Core不包含Html.Action()帮助器,它可以允许我的IInputModel
绑定到控制器中的某种类型的局部视图,我不想要在我看来写switch
之类的内容。
问题是如何在主视图中为我的动态数据渲染部分视图(然后将输入的数据提交到表单)?或者可能有其他方法来实现动态数据输入?