我有一个名为Parameters的类。
public class Parameters
{
public string Name { get; set; }
//other properties
public List<LatLong> Coordinates { get; set; }
}
LatLong是这样的:
public class LatLong
{
public double Latitude { get; set; }
public double Longitude { get; set; }
}
在前端,我具有以下用于创建新的Parameters类的形式。
@model Parameters
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
@Html.EditorForModel()
}
我有一个用于列表的EditorTemplate: 视图/共享/EditorTemplates/LatLongList.cshtml
@model List<LatLong>
@foreach (var ll in Model)
{
@Html.EditorForModel()
}
和LatLong的EditorTemplate: 视图/共享/EditorTemplates/LatLong.cshtml
@model LatLng
@Html.EditorFor(model => model.Latitude)
@Html.EditorFor(model => model.Longitude)
但是,什么都没有出现。
如何允许用户输入他们想要的任意多个坐标?
答案 0 :(得分:0)
这是一个可行的示例,您可以参考
主视图:
@model MVC3_0.Models.ParameterModel.Parameters
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
@Html.EditorForModel("AddParameter")
}
AddParameter的EditorTemplate:视图/共享/EditorTemplates/AddParameter.cshtml
@model MVC3_0.Models.ParameterModel.Parameters
<div>
<div>
<label> Name:</label>
@Html.TextBoxFor(x => x.Name)
</div>
<div>
<label>Count:</label>
@Html.TextBoxFor(x => x.Count)
</div>
<div>
<label>Coordinates:</label>
//Editor Template for LatLongList
@Html.EditorFor(x => x.Coordinates)
</div>
</div>
LatLong的EditorTemplate:Views / Shared / EditorTemplates / LatLong.cshtml, EditorFor会为您遍历集合。
@model MVC3_0.Models.ParameterModel.LatLong
<div>
<label>Latitude:</label>
@Html.TextBoxFor(model => model.Latitude)
</div>
<div>
<label>Longitude:</label>
@Html.TextBoxFor(model => model.Longitude)
</div>
参考:
How should I call `EditorForModel` with its parameters?
https://forums.asp.net/t/1948071.aspx?EditorFor+and+EditorForModel