有条件地根据下拉列表选择显示表单元素

时间:2015-10-26 07:57:57

标签: c# asp.net asp.net-mvc asp.net-mvc-5

原谅我的经验不足,我有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属性。

所有这些似乎都在围绕框架而不是使用它。是否有我不知道的剃刀标签?我接近这个错吗?这显然不是新的,但我想不出正确的搜索条件。

0 个答案:

没有答案