用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页面调用类?

用ASP管理windows的通用解决方案.净MVC

将数据集传递给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>

希望对你有帮助。

快乐编码:)