MVC为不同的下拉列表选择执行不同的方法

MVC Perform different methods for different dropdownlist selections

本文关键字:执行 方法 选择 下拉列表 MVC      更新时间:2023-09-26

控制器

    [Authorize]
    public ActionResult Create()
    {
        var LeaveType = new SelectList(new[] 
        {
            new { ID = "0", Name = "" },
            new { ID = "1", Name = "Full day leave" },
            new { ID = "2", Name = "Half day AM leave" },
            new { ID = "3", Name = "Half day PM leave" },  
            new { ID = "4", Name = "Time off" }, 
        },
        "ID", "Name", 0);
        ViewData["LeaveType"] = LeaveType;
        return View();
    }

查看

<div class="form-group">
    <div class="col-md-4 col-md-offset-4">
        <label class="text-center">Leave Type</label>
        @Html.DropDownList("LeaveType", null, htmlAttributes: new { @class = "form-control" })
    </div>
</div>

脚本

$('#LeaveType').change(function () {
    var value = $(this).val();
        if (value == "0") {
            $('#EndDate').closest('.form-group').hide();
            $('#StartDate').closest('.form-group').hide();
            $('#datetimepicker6').closest('.form-group').hide();
            $('#datetimepicker7').closest('.form-group').hide();
            $('#leaveReason').closest('.form-group').hide();
            $('#createBtn').closest('.form-group').hide();
            $('#cancelBtn').closest('.form-group').hide();
        }
        else if (value == "1") {
            $('#EndDate').closest('.form-group').show();
            $('#StartDate').closest('.form-group').show();
            $('#datetimepicker6').closest('.form-group').hide();
            $('#datetimepicker7').closest('.form-group').hide();
            $('#leaveReason').closest('.form-group').show();
            $('#createBtn').closest('.form-group').show();
            $('#cancelBtn').closest('.form-group').show();
            @*@Html.ValueFor(CurrentApplication.)*@
        }
        else if (value == "2") {
            $('#EndDate').closest('.form-group').hide();
            $('#StartDate').closest('.form-group').show();
            $('#datetimepicker6').closest('.form-group').hide();
            $('#datetimepicker7').closest('.form-group').hide();
            $('#leaveReason').closest('.form-group').show();
            $('#createBtn').closest('.form-group').show();
            $('#cancelBtn').closest('.form-group').show();
        }
        else if (value == "3") {
            $('#EndDate').closest('.form-group').hide();
            $('#startDate').closest('.form-group').show();
            $('#datetimepicker6').closest('.form-group').hide();
            $('#datetimepicker7').closest('.form-group').hide();
            $('#leaveReason').closest('.form-group').show();
            $('#createBtn').closest('.form-group').show();
            $('#cancelBtn').closest('.form-group').show();
        }
        else {
            $('#EndDate').closest('.form-group').hide();
            $('#StartDate').closest('.form-group').hide();
            $('#datetimepicker6').closest('.form-group').show();
            $('#datetimepicker7').closest('.form-group').show();
            $('#leaveReason').closest('.form-group').show();
            $('#createBtn').closest('.form-group').show();
            $('#cancelBtn').closest('.form-group').show();
        }
    });

我的LeaveType是一个下拉列表,用户可以在其中选择他们想要申请的假期类型(例如全天/半天/休息时间)。当他们在下拉列表中选择值时,我想隐藏或显示某些元素,因为根据休假类型,可能不需要某些元素。

我有一个startDate和endDate文本框,对于半天,我不会显示endDate文本盒,但如果用户从下拉列表中选择了半天选项,我想将endDate设置为与startDate相同。我猜我应该有一个if-else循环,我知道如何写代码,但我不知道该把它放在哪里。

此外,当我在表中显示数据时,我的下拉列表值将显示为ID。如何显示LeaveType的名称?感谢所有的帮助^^谢谢!

您可以使用#StartDatechange事件,如下所示。希望这对你有帮助。

$('#StartDate').change(function() {
     var endDate = $('#EndDate');
     if ($('#LeaveType').val()==2) {
         endDate.val($(this).val());
     }
 });