gpt4 book ai didi

javascript - 在模式窗口 MVC4 上显示下拉列表

转载 作者:行者123 更新时间:2023-11-28 07:03:06 25 4
gpt4 key购买 nike

所以,我对 MVC 的东西相当陌生,但我在 ASP.Net 上已经有 10 年的经验了,而且我对如何在 ASP.Net Web 表单上实现如此简单的东西感到非常困惑。或者干净、简单的 javascript 花了我很多时间来解决。

问题是,我正在为多种类型的项目创建一些基本模板,因此,我的 Controller 和 View 上有 CRUD 操作。到目前为止一切正常。

现在,我的 Controller 的 CRUD 操作,我将它们加载到模式窗口上,并且出于 UI 目的,我使用 BootStrap。创建、编辑、删除或查看详细信息 View 加载到索引 View 上调用的模态窗口上没有问题,为此我使用 $("#modalContent").load(url)然后$("#modal").modal("show"),小菜一碟,并且到目前为止工作正常。我刚刚遇到了一个场景,我遇到了问题。

在一个 View 中,我有一个下拉列表,其中一个值必须显示另一个下拉列表,模型属性的最终值将从其中分配。这是上述的查看代码

@model Sysbat.Models.Property

@{
ViewBag.Title = "Create";
Layout = "~/Views/Shared/_DetailsLayout.cshtml";
}


@using (Html.BeginForm()) {
@Html.ValidationSummary(true)

<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="myModalLabel">Create</h4>
</div>
<div class="modal-body" onload="setDDLEvents">
<div class="editor-field form-group input-group">
@Html.LabelFor(model => model.Name, new { @class = "input-group-addon" })
@Html.EditorFor(model => model.Name, new { @class = "form-control" })
</div>
@Html.ValidationMessageFor(model => model.Name)
<div class="editor-field form-group input-group">
@Html.LabelFor(model => model.Type, new { @class = "input-group-addon" })
@Html.DropDownList("ddlSimpleType", (SelectList) ViewBag.ListTypes, new { @class = "form-control", id = "ddlSimpleTypes" })
</div>
<div id="complexType" class="editor-field form-group input-group" style="display:none">
@Html.Label("Complex Type", new { @class = "input-group-addon" })
@Html.DropDownList("ddlComplexType", (SelectList) ViewBag.ListComplexTypes, new { @class = "form-control", id = "ddlComplexTypes" })
</div>
@Html.HiddenFor(model => model.Type, new { id = "hdnTypeValue" })
@Html.ValidationMessageFor(model => model.Type)
</div>
<div class="modal-footer">
<input type="submit" value="Create" class="btn btn-success" />
</div>
}
@section scripts {
@Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
$(function() {
$("#ddlSimpleTypes").on("change", function () {
var val = $(this).val();
if (val === "Complex") {
$("#hdnTypeVal").val('');
$("#ddlTiposObjetos").show();
}
else {
$("#hdnTypeVal").val(val);
$("#ddlTiposObjetos").hide();
}
});
$("#ddlComplexTypes").on("change", function){
$("#hdnTypeVal").val($("#ddlComplexTypes").val());
});
};
</script>
}

因此,如果代码不清楚,则 ddlSimpleType 的任何值都将通过隐藏字段绑定(bind)到 model.Type 属性中,但是,如果ddlSimpleType 下拉列表设置为“Complex”。然后将显示一个包含复杂类型的下拉列表及其值集,该下拉列表还将将所选值存储到前面提到的隐藏字段中。

我面临的问题是,设置字段事件的函数没有被触发。

我读过,部分 View 不可能做这种事情,但这是完整的 View ,而且,我不想为每个使用特殊 JavaScript 逻辑的 View 创建一个 js,我非常同意将其内联。

有什么建议吗?

这是布局代码(如果有帮助的话)

@{
Layout = null;
}

<!DOCTYPE html>

<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
<div id="wrapper">
@RenderBody();
</div>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
</html>

最佳答案

好吧,最后我得到了一个答案就出现在我面前的时刻。

我使用 $(document).load() 进行了测试,这是我最喜欢的在页面加载后执行代码的方法,但是后来,我记得还有就绪语句,所以我进行了测试使用 $(document).ready() 并且它工作完美。

关于javascript - 在模式窗口 MVC4 上显示下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31927065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com