用ASP管理windows的通用解决方案.净MVC
本文关键字:解决方案 MVC ASP 管理 windows | 更新日期: 2023-09-27 18:06:07
在我的项目中有三种不同的打开新窗口的情况。当我单击窗口中的链接时,我希望执行以下解决方案之一:
我将使用以下类型的窗口打开:
平等自愿_self
_parent
我有以下列用于打开一个新窗口:
Code Width Height Behaviour
AccountPage 400 600 Self
ProspectPage 700 700 Blank
PasswordPage 200 200 Single
我需要传递特定的参数,如宽度,高度和代码的javascript。代码用于打开屏幕并获取其参数。我有发票页面,前景页面,搜索页面等。如果打开了invoicepage,则宽度为200;如果打开了prospectpage,则宽度为400px。
在通用技术中管理和传递javascript窗口打开类型和参数的正确方法是什么?我该如何准备我的类和类型?
我尝试在我的LayoutGeneral中使用meta标签。cshtml用于将数据集传递给javascript,但我无法获得它。
<meta name="IrisTabHeaderName" content="@Model.WindowInfo" />
我应该在我的BaseViewModel中保存我的数据,并从那里将参数传递给javascript,还是我应该在javascript中保存我的所有情况,并从cshtml页面调用类?
将数据集传递给javascript的方式是错误的。您可以使用枚举或json对象来保存页面参数,然后按如下方式对其进行反序列化:
var data =
'[{
"Code": {
"AccountPage": { "width": "400", "height": "600", "name": "_self" },
"ProspectPage": { "width": "700", "height": 700, "name": "_blank" },
"PasswordPage": { "width": "200", "height": "200", "name": "PasswordPage" }
}
}]';
添加此数据。脚本中的Json文件来源:
<script type="text/javascript" src="data.json"></script>
并从javascript中的json文件中获取对象:
var pageRules = JSON.parse(data);
最后,你可以用attach to 'a' tag的click事件来检查它:
$(function () {
$("a").click(MyLinkClickFunc);
});
function MyLinkClickFunc()
{
var $this = $(this);
var attrName = $this.attr("name");
var params = null;
if (typeof attrName !== typeof undefined && attrName !== false) {
params = pageRules.Code[attrName];
if(params == null)
{
var authCode = attrName.substr(0, attrName.indexOf('_'));
params = pageRules.Code[authCode];
}
}
if (params != null)
{
MyPopupOpener($this.attr("href"), params.name, params.width, params.height);
}
}
我认为你可以使用的最佳方法是:-首先,您必须为您的窗口类型创建Enum
-使用这些Enums
设置您的属性-和最后设置您的属性值在您的.cshtml
页。
我有一个创建一个示例演示给你,它可能会帮助你:
1)创建一个Window类型的Enum:
public enum WindowTypes
{ _self = 1,
_blank = 2,
_parent = 3,
_top = 4
}
2)创建一个属性到你的Base View Model
public class TestBaseViewModel
{
public int WindowType { get; set; }
}
3)设置属性值到你的控制器或存储库
public ActionResult Index()
{
TestBaseViewModel model = new TestBaseViewModel();
model.WindowType = (int)EnumsCollection.WindowTypes._blank; // apply your logic like this
return View(model);
}
4)只需在.cshtml页面
获取此属性@Html.ActionLink("link text", "actionName", null, new { target = Enum.GetName(typeof(EnumsCollection.WindowTypes), Model.WindowType) })
则输出如下:
<a href="/Controller/actionName" target="_blank">link text</a>
希望对你有帮助。
快乐编码:)