原谅我的经验不足,我有C#chops,但我刚开始学习ASP.NET MVC框架。
所以我有一些看起来像这样的模型:
public abstract class Movement
{
public int Id { get; set; }
public string Name { get; set; }
public abstract MovementType Type { get; }
}
public class WeightedMovement : Movement
{
public override MovementType Type
{
get
{
return MovementType.WeightBased;
}
}
public double Weight { get; set; }
}
public class LengthMovement : Movement
{
public int Distance { get; set; }
public override MovementType Type
{
get
{
return MovementType.LengthBased;
}
}
}
public enum MovementType
{
LengthBased,
WeightBased
}
在“创建”视图中,我想使用组合框选择类型,然后显示相应的表单元素(此时它只是权重或距离的文本框)。
以下是目前为止的观点:
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Type, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EnumDropDownListFor(model => model.Type)
@Html.ValidationMessageFor(model => model.Type)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
我只是为了一个业余爱好做过网络工作,从来没有专业,所以我采用天真的方式做到这一点就是使用jQuery删除或添加元素到DOM,然后根据基础上转换为正确的具体类型Controller方法中的Type属性。
所有这些似乎都在围绕框架而不是使用它。是否有我不知道的剃刀标签?我接近这个错吗?这显然不是新的,但我想不出正确的搜索条件。