Javascript 使用ASP.NET MVC管理windows的通用解决方案
在我的项目中,我有三个不同的案例来打开新窗口。单击窗口中的链接时,我希望执行以下解决方案之一: 我将使用以下类型打开窗口: _空白Javascript 使用ASP.NET MVC管理windows的通用解决方案,javascript,c#,asp.net,asp.net-mvc,window,Javascript,C#,Asp.net,Asp.net Mvc,Window,在我的项目中,我有三个不同的案例来打开新窗口。单击窗口中的链接时,我希望执行以下解决方案之一: 我将使用以下类型打开窗口: _空白 _自我 _母公司 我有以下列用于打开新窗口: Code Width Height Behaviour AccountPage 400 600 Self ProspectPage 700 700 Blank PasswordPage 200 200 Single 我需
_自我
_母公司 我有以下列用于打开新窗口:
Code Width Height Behaviour
AccountPage 400 600 Self
ProspectPage 700 700 Blank
PasswordPage 200 200 Single
我需要向javascript传递特定参数,如宽度、高度和代码。代码用于打开屏幕并获取其参数。我有invoicepage、prospectpage、searchpage等。如果打开invoicepage,其宽度将为200;如果打开prospectpage,其宽度将为400px
在通用技术中,管理和传递javascript窗口打开类型和参数的正确方法是什么?我如何准备我的课程和类型
我试图在LayoutGeneral.cshtml中使用meta标记将数据集传递给javascript,但我无法获得它
<meta name="IrisTabHeaderName" content="@Model.WindowInfo" />
我应该在BaseViewModel中保存数据并将参数传递给javascript,还是应该在javascript中保存所有案例并使用类从cshtml页面调用?根据我的说法,您可以使用的最佳方法是: -首先,必须为窗口类型创建
Enum
-然后使用这些枚举设置属性
-最后在.cshtml
页面上设置属性值
我为您创建了一个示例演示,它可能会帮助您:
1)为窗口类型创建枚举:
public enum WindowTypes
{ _self = 1,
_blank = 2,
_parent = 3,
_top = 4
}
2)在基本视图模型中创建属性
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>
希望它能帮助你
快乐编码:)将数据集传递给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" }
}
}]';
在脚本源中添加此data.json文件:
<script type="text/javascript" src="data.json"></script>
最后,您可以通过附加到“a”标记的单击事件进行检查:
$(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);
}
}
可能的副本请参阅答案。只需在链接中为target=”“
属性提供一个名称,如果已使用您在目标中指定的名称打开该窗口,则该属性将加载到同一窗口中。您可能可以使用code
值来执行此操作。每次加载。当我在当前窗口中单击一个新链接时,如果密码页之类的代码没有打开窗口,我应该打开一个新的空白模式页面,但是如果我已经打开了该链接的窗口,我将不会打开一个新的空白模式窗口。我应该在该窗口中打开链接,而不是在另一个窗口中。模式窗口,或新的选项卡/窗口?是否要使用控制器或存储库中的逻辑设置窗口类型的条件,并设置链接的窗口类型。是吗?这是一个很好的解决方案,但除此之外,我还需要向javascript传递特定的参数,如宽度、高度和代码。代码用于打开屏幕并获取其参数。我有invoicepage、prospectpage、searchpage等。如果打开invoicepage,其宽度将为200,或者如果打开prospectpage,其宽度将为400px。如果您可以将html代码和javascript发布到您希望实现sameI的位置(如此透视图),则会更好。它比我的解决方案更实用。非常感谢。
$(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);
}
}