使用局部视图和 Jquery 启用从不同视图中的相同下拉列表的选择
Using Partial View and Jquery to enable selection from the same dropdownlist in different Views
我有以下下拉列表可以根据所选课程过滤结果。以下 div 被复制到 5 个不同的视图,因为在所有这些视图中,我需要根据从下拉列表中选择的课程过滤一些数据。
<div class="row">
<div class="col-sm-8 text-center">
@Html.DropDownList("Courses", null, htmlAttributes: new { @class = "form-control" })
</div>
<div class="col-sm-2">
<a class="btn btn-info filterbycourse"> FILTER</a>
</div>
</div>
在每个视图中,我都有以下设置操作的脚本 url。以下代码将 Badge
作为控制器。但是,控制器在其他 4 个视图中是不同的。因此,在视图中只有 controller
名称发生变化。
<script>
$(function () {
$(".filterbycourse").click(function () {
var course_id = $('#Courses').val();
var url = '@Url.Action("Index", "Badge", new { CourseId = "----" }, null)';
url = url.replace("----", course_id);
window.location = url;
});
});
</script>
我知道我可以为此创建局部视图。但是,我仍然需要在所有使用局部视图的视图中使用 jQuery 脚本。不知有没有有效的方法来处理这种情况?
您可以在局部视图中保留下拉菜单并使用它。对于处理点击事件的脚本,你只需要将它保存在一个地方,但对不同的页面使用不同的基础url。
所以在你使用这个部分的个人 views/pages 中,你必须像这样设置基础 url
@section Scripts
{
<script>
var settings = settings || {};
settings.SearchUrl="@Url.Action("Search","Badge", new { CourseId = "----" })";
</script>
}
并更新您的通用脚本以从当前页面读取此值并使用它来构建最终的 url。
$(function () {
$(".filterbycourse").click(function () {
var course_id = $('#Courses').val();
var baseUrl = settings.SearchUrl;
var url = baseUrl ;
url = url.replace("----", course_id);
window.location.href = url;
});
});
我有以下下拉列表可以根据所选课程过滤结果。以下 div 被复制到 5 个不同的视图,因为在所有这些视图中,我需要根据从下拉列表中选择的课程过滤一些数据。
<div class="row">
<div class="col-sm-8 text-center">
@Html.DropDownList("Courses", null, htmlAttributes: new { @class = "form-control" })
</div>
<div class="col-sm-2">
<a class="btn btn-info filterbycourse"> FILTER</a>
</div>
</div>
在每个视图中,我都有以下设置操作的脚本 url。以下代码将 Badge
作为控制器。但是,控制器在其他 4 个视图中是不同的。因此,在视图中只有 controller
名称发生变化。
<script>
$(function () {
$(".filterbycourse").click(function () {
var course_id = $('#Courses').val();
var url = '@Url.Action("Index", "Badge", new { CourseId = "----" }, null)';
url = url.replace("----", course_id);
window.location = url;
});
});
</script>
我知道我可以为此创建局部视图。但是,我仍然需要在所有使用局部视图的视图中使用 jQuery 脚本。不知有没有有效的方法来处理这种情况?
您可以在局部视图中保留下拉菜单并使用它。对于处理点击事件的脚本,你只需要将它保存在一个地方,但对不同的页面使用不同的基础url。
所以在你使用这个部分的个人 views/pages 中,你必须像这样设置基础 url
@section Scripts
{
<script>
var settings = settings || {};
settings.SearchUrl="@Url.Action("Search","Badge", new { CourseId = "----" })";
</script>
}
并更新您的通用脚本以从当前页面读取此值并使用它来构建最终的 url。
$(function () {
$(".filterbycourse").click(function () {
var course_id = $('#Courses').val();
var baseUrl = settings.SearchUrl;
var url = baseUrl ;
url = url.replace("----", course_id);
window.location.href = url;
});
});