gpt4 book ai didi

asp.net-mvc - 将数据从模态内的局部 View 传递到主视图,然后关闭模态

转载 作者:行者123 更新时间:2023-12-05 07:49:54 25 4
gpt4 key购买 nike

我的 Index.cshtml 文件中有一个按钮定义如下:

<button type="button" class="btn btn-default" data-toggle="modal" data-target="#myModal">
Add Value
</button>

点击按钮打开一个模态窗口。我的模式在 Index.cshtml 文件中定义如下:

    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">Add a Value</h4>
</div>
<div class="modal-body">
@(Html.Kendo().TabStrip()
.Name("tabstrip")
.Items(ts =>
{

ts.Add().Text("Pick a school").Selected(true).LoadContentFrom(Url.Action("SchoolPartial", "Institution"));
})
)
</div>
</div>
</div>

下面是我的局部图(SchoolPartial.cshtml):

<div class="col-md-12">

@(Html.Kendo().Editor()
.Name("schoolEditor")
.Tag("div")
.Tools(tools => tools
.Clear()
.Bold().Italic().Underline().Strikethrough()
.JustifyLeft().JustifyCenter().JustifyRight().JustifyFull()
.CreateLink().Unlink()
.InsertImage()
.TableEditing()
.FontColor().BackColor()
)
.Value(@<text><p>
<div class="container-fluid">
<div class="row">
<div class="col-md-4">Senior School</div>
</div>
</div>
</p></text>))
</div>

现在,用户点击 Index.cshtml 文件中的'Add Value' 按钮,'myModal' 窗口打开,并在 'myModal' 窗口中的“选择学校”选项卡,它加载了 “SchoolPartial” 选项卡,我希望用户能够单击“高中”div。当用户点击 SchoolPartial.cshtml 中的高中 div 时,我希望将 id = 2 传递到我的 Index.cshtml,然后它将从数据库中加载学校名称和地址详细信息并将其显示在 Index.cshtml 中。

我怎样才能实现这种行为。

谢谢!

编辑:

在我的 SchoolPartial.cshtml 中,为了让我的 div 可以点击,我用 anchor 标记包围了我的 div,如下所示:

<a href="@Url.Action("RetrieveSchoolDetails", "School", new {schoolId= "2" })">
<div class="col-md-4">senior school</div>
</a>

这里的 School 是我的 Controller (SchoolController.cs),RetrieveSchoolDetails 是操作方法。

这就是我定义 RetrieveSchoolDetails 方法的方式:

 public void RetrieveSchoolDetails (string schoolId= null)
{
var schoolDetail = db.School.Where(e => e.SchoolId== schoolId).ToList();
string Address = Convert.ToString(schoolDetail .Select(e => e.Address));
string Name = Convert.ToString(schoolDetail .Select(e => e.Name));
string School= Name + Address;

ViewBag.SchoolSelection = School;
}

现在我想,一旦信息进入 ViewBag,我想关闭模态窗口,以便选择和 ViewBag 信息显示在 Index.cshtml 中。
我不确定如何从 Controller 关闭我的引导模式,以便它向我显示 Index.cshtml 中的数据。
或者可能只是向我显示模态,用户可以手动关闭模态,以便 ViewBag 信息仍然存在。当我运行我的项目时,在为 ViewBag 赋值后,浏览器继续处理,我无法单击我的模式来关闭它。

求推荐!

谢谢

编辑 2:

我编辑了我的代码并使用 div 单击调用 javascript 函数,然后使用 ajax 调用 Controller 的方法 - RetrieveSchoolDetails 并从该 Controller 方法返回部分 View 。

它现在所做的是,返回全屏显示学校地址的部分 View 。也就是说,它使用生成的学校地址将我重定向到我的局部 View 。

但是我想关闭模式,然后在我的父页面 (Index.cshtml) 中显示该部分 View 。

下面是我的代码添加-

下面的div在SchoolPartial.cshtml中

 <div onclick="GetAddress('2')" class="col-md-4">senior school</div>  

JavaScript 函数

<script>
function GetAddress(code)
{
$.ajax({
url: '/School/RetrieveSchoolDetails?schoolID=2',
contentType: 'application/html; charset=utf-8',
type: 'GET',
dataType: 'html'

})
.success(function (result) {
$('#npAddress').html(result); //npAddress is id of my div inside
//Index.cshtml where I want to display the partial.
//Here I want to close the modal window
//and show Index.cshtml in it's filled state.
})
.error(function (xhr, status) {
alert(status);
})
};

</script>

下面是我的 Controller 方法:

public void RetrieveSchoolDetails (string schoolId= null)
{
var schoolDetail = db.School.Where(e => e.SchoolId== schoolId).ToList();
string Address = Convert.ToString(schoolDetail .Select(e => e.Address));
string Name = Convert.ToString(schoolDetail .Select(e => e.Name));
string School= Name + Address;

ViewBag.SchoolSelection = School;
return PartialView("_schoolAddress");
}

下面是我的_schoolAddress.chtml部分

@ViewBag.SchoolSelection

最佳答案

首先,你真的不需要在这里使用部分。使用 partials 的目的是在其中放置一些需要在多个地方(不同页面)重复使用的 html 代码。通过将它放在一个部分中,然后从多个页面调用该部分,您可以使您的项目更易于维护(任何更改只需要进行一次)。但是,partials 增加了一定程度的复杂性,不建议初学者使用。它们可以是强大的工具,但让我们从基础开始,然后逐步完善。

其次,我不会在 Razor 上使用任何其他插件(例如剑道)。使用它没有任何问题,但让我们暂时保持简单。另外, Razor 本身就非常强大。

我为您编写了一些内容,但您必须填补空白。

@model MyProject.Models.MyModel

<div class="">

<button type="button" class="btn btn-default" data-toggle="modal" onclick="AddValue()">
Add Value
</button>



</div>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">Add a Value</h4>
</div>
<div class="modal-body">
<!-- some tabs here? -->
<!-- put code for tabs here, don't use a partial -->
<div onclick="GetAddress(2)" class="col-md-4">senior school</div>
</div>
</div>
</div>
</div>
<script>

function AddValue()
{
$('myModal').modal();

}

function GetAddress(id)
{
$.ajax(
{
url: '/School/RetrieveSchoolDetails?schoolID' + id,
contentType: 'application/html; charset=utf-8',
type: 'GET',
contentType: 'application/json',
success: function (result) {
$('#npAddress').text(result);
},
error: function (xhr, status) {
alert(status);
}
});

}


</script>

在你的 Controller 中:

        public JsonResult RetrieveSchoolDetails (string schoolId)
{
// don't use a default null here unless you plan on handling it somehow
// otherwise the next line would throw an error
var schoolDetail = db.School.Where(e => e.SchoolId== schoolId).ToList();
string Address = Convert.ToString(schoolDetail .Select(e => e.Address));
string Name = Convert.ToString(schoolDetail .Select(e => e.Name));
string School= Name + Address;
// may need to format this depending on exactly what you want to return
return Json(school);
}

请记住,整个学习过程意味着从简单开始,然后逐渐变得更复杂。

关于asp.net-mvc - 将数据从模态内的局部 View 传递到主视图,然后关闭模态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36802114/

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