开发工具与关键技术: VisualStudio 2015 mvc
作者:杨泽平
撰写时间:2019、7、12
跨页面回填,在回填方法里也是用的比较多的一种,他有区别于其他回填方法的就是,他需要在不同的两个页面之间传递参数。
我们都知道,回填数据是需要根据主键ID进行回填的,其实也并非一定需要根据主键ID,准确的说回填是可以根据任意数据库唯一字段来进行回填,只要那个字段在数据库可以是唯一的,不会出现重复的就可以。
在同一个页面进行回填,是通过页面传递唯一参数到控制器,控制器根据传递过来的参数进行查询,同样的道理,跨页面回填也是,通过一个页面向另一个页面传递一个唯一的参数,通过传递的参数进行查询,以下面的为例子。
首先,在第一个页面里我是在layui数据表格里查询出我需要传递的ID,通过获取选中行,提取我需要传递的ID,然后通过window.location.href跳转页面,在跳转页面的路径上将需要传递的ID拼在后面一起传递过去。
详情代码如下:
function
LengthenFill(ElderID) {
//获取点击行
var checkStatus = layuiTable.checkStatus("tabExpireRemind");
if (checkStatus.data.length > 0) {
layer.confirm("是否确定要续约,是请点击确认进入续约界面,否则请取消!",
{ icon: 3, title: "提示" }, function (layIndex) {
layer.close(layIndex);
//获取需要传递的ID
var ElderID = checkStatus.data[0].ElderID;
//进入回填页面
window.location.href = "/ReceptionManagement/Lengthen/Lengthen?ElderID=" + ElderID;
});
} else {
layer.alert("请选择需要续约的长者!", { icon: 0, title: "提示" });
}
};
第一个页面传递了参数,在第二个页面需要接收参数,还有我这里垮了页面也垮了控制器,其实这跨不跨控制器都是一样的,接收参数只要是在你进入第二个页面的控制器方法里接收就行了,接收很简单,就不多说了,直接看代码吧。
代码如下:
public ActionResult Lengthen(int? ElderID)
{
try
{
//回填参数
string str =
ElderID.ToString();
ViewBag.ElderID
= ElderID;
return View();
}
catch (Exception e)
{
Console.WriteLine(e);
return Redirect("/Main/Login");
}
}
控制器接收到之后,需要返回视图,视图获取到传递过来的参数就可以根据参数进行查询。
视图接收代码如下:
var ElderID=@ViewBag.ElderID;
获取到参数后就是查询方法了,查询数据回填就不说了,最后看一下效果吧。
首先第一个页面,获取传递的ID参数,拼接到跳转路径进行传递,如下图所示:
然后在第二个页面的控制器接收,接收到之后返回视图,如下图所示:
最后是回填后的一部分截图,如下图所示: