我的 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">×</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文件中的&#39;添加值&#39; 按钮,&#39; myModal&#39; 窗口打开,在&#39; myModal&#39; 窗口中,选择一所学校&#39;选项卡,其中加载&#39; SchoolPartial&#39; 标签,我希望用户能够点击“高中”&#39; DIV。当用户点击 SchoolPartial.cshtml 中的高中div时,我希望将 id = 2 传递给我的 Index.cshtml ,然后这将会从数据库加载学校名称和地址详细信息,并将其显示在 Index.cshtml 中。
如何实现此行为。
谢谢!
编辑:
在我的SchoolPartial.cshtml中,为了使我的div可点击,我用下面的锚标记包围了我的div:
<a href="@Url.Action("RetrieveSchoolDetails", "School", new {schoolId= "2" })">
<div class="col-md-4">senior school</div>
</a>
这里School是我的控制器( 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中。
我不确定,如何从控制器关闭我的bootstrap模式,以便它显示Index.cshtml中的数据。
或者可能只是向我显示模态,用户可以手动关闭模态,以便ViewBag信息仍然存在。当我运行我的项目时,在为ViewBag赋值后,浏览器继续处理,我无法点击我的模态来关闭它。
请建议!
由于
编辑2:
我编辑了我的代码并使用,div点击调用javascript函数,然后使用ajax调用控制器的方法 - RetrieveSchoolDetails并从该控制器方法返回部分视图。
现在正在做的是,全屏返回学校地址的部分视图。也就是说,它将生成的学校地址重定向到我的部分视图。
但是我想关闭模态,然后在我的父页面(Index.cshtml)中显示部分视图。
以下是我的代码添加 -
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>
以下是我的控制器方法:
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
答案 0 :(得分:0)
首先,你不需要在这里使用部分内容。使用partials的目的是在那里放置一些需要在多个地方(不同页面)重用的html代码。通过将其放在一个部分中,然后从多个页面调用该部分,可以使项目更容易维护(任何更改只需要进行一次)。但是,部分增加了一定程度的复杂性,不建议初学者使用。它们可以是强大的工具,但我们可以从基础开始,然后再努力。
其次,我不会在剃刀顶部使用任何其他插件(例如剑道)。使用它没有任何问题,但现在让它保持简单。另外,剃刀对它来说非常强大。
我为你编写了一些东西,但是你必须填补空白。
@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">×</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>
在您的控制器中:
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);
}
请记住,整体学习过程意味着从简单开始,然后构建到更复杂的过程。