首页 新闻 会员 周边

如何在.cshtml页面中添加一个方法

0
悬赏园豆:30 [已解决问题] 解决于 2013-01-16 15:52
@model Ext.Net.MVC.Sample.Models.ExtNetModel

//我下面的添加的方式是错的,该如何添加??然后用this.InitPortlet调用
@{
    private void InitPortlet(Portlet portlet) 
    {
        portlet.Html = "={text}";
        portlet.BodyPadding = 5;
        portlet.CloseAction = CloseAction.Hide;
        
        portlet.DirectEvents.Hide.Action =  "PortletHide";
        portlet.DirectEvents.Hide.EventMask.ShowMask = true;
        portlet.DirectEvents.Hide.EventMask.Msg = "Saving...";
        portlet.DirectEvents.Hide.EventMask.MinDelay = 500;

        portlet.DirectEvents.Hide.ExtraParams.Add(new { id = portlet.ClientID });
    }
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@App_Core.AppSettingKeys.AppName</title>
</head>
<body>


</body>
</html>
我不是小海的主页 我不是小海 | 初学一级 | 园豆:145
提问于:2013-01-16 13:41
< >
分享
最佳答案
0

委托

Action<Portlet>  InitPortlet= portlet=>{ 
portlet.Html = "={text}";
portlet.BodyPadding = 5;
portlet.CloseAction = CloseAction.Hide;
portlet.DirectEvents.Hide.Action = "PortletHide";
portlet.DirectEvents.Hide.EventMask.ShowMask = true;
portlet.DirectEvents.Hide.EventMask.Msg = "Saving...";
portlet.DirectEvents.Hide.EventMask.MinDelay = 500;
portlet.DirectEvents.Hide.ExtraParams.Add(new { id = portlet.ClientID }); }

 

收获园豆:30
Qlin | 老鸟四级 |园豆:2403 | 2013-01-16 14:27

定义成你这种方式了,但是不行。this.还是找不到这个委托变量。

下面是整张页面。


@model Ext.Net.MVC.Sample.Models.ExtNetModel


//换成你的委托方式了
@{
Action<Portlet> InitPortlet = portlet =>
{
portlet.Html = "={text}";
portlet.BodyPadding = 5;
portlet.CloseAction = CloseAction.Hide;
portlet.DirectEvents.Hide.Action = "PortletHide";
portlet.DirectEvents.Hide.EventMask.ShowMask = true;
portlet.DirectEvents.Hide.EventMask.Msg = "Saving...";
portlet.DirectEvents.Hide.EventMask.MinDelay = 500;
portlet.DirectEvents.Hide.ExtraParams.Add(new { id = portlet.ClientID });
};

}


<!DOCTYPE html>


<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>@App_Core.AppSettingKeys.AppName</title>


<style>
.x-column-padding{
padding : 10px 0px 10px 10px;
}

.x-column-padding1{
padding : 10px;
}
</style>


<script type="text/javascript">
var text = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed metus nibh, sodales a, porta at, vulputate eget, dui. Pellentesque ut nisl. Maecenas tortor turpis, interdum non, sodales non, iaculis ac, lacus. Vestibulum auctor, tortor quis iaculis malesuada, libero lectus bibendum purus, sit amet tincidunt quam turpis vel lacus. In pellentesque nisl non sem. Suspendisse nunc sem, pretium eget, cursus a, fringilla vel, urna.";
</script>


</head>
<body>



@Html.X().ResourceManager()
@(
Html.X().Viewport().Layout(LayoutType.Border).Items(Html.X().Panel().Region(Region.West).Title("West").Width(200)
.Collapsible(true)
.Split(true)
.MinWidth(175)
.MaxWidth(400)
.MarginSpec("5 0 5 5")
.Layout(LayoutType.Accordion)
.Items(
Html.X().Panel()
.Collapsed(true)
.Icon(Icon.Note)
.AutoScroll(true)
.Title("Content")
.Html("={text}")
.BodyPadding(5),

Html.X().Panel()
.Collapsed(true)
.Icon(Icon.FolderWrench)
.AutoScroll(true)
.Title("Settings")
.Html("={text}")
.BodyPadding(5)
),

Html.X().TabPanel()
.Region(Region.Center)
.Title("TabPanel")
.MarginSpec("5 5 5 0")
.Items(
Html.X().Panel()
.Title("Tab 1")
.Layout(LayoutType.Fit)
.Items(
Html.X().Portal()
.Items(
Html.X().PortalColumn()
.Cls("x-column-padding")
.Items(
Html.X().Portlet()
.ID("Portlet1")
.Title("Another Panel 1")
.Icon(Icon.Accept)
.Control(portlet => {
this.InitPortlet(portlet);
})
),

Html.X().PortalColumn()
.Cls("x-column-padding")
.Items(
Html.X().Portlet()
.ID("Portlet2")
.Title("Panel 2")
.Control(portlet => {
this.InitPortlet(portlet);
}),

Html.X().Portlet()
.ID("Portlet3")
.Title("Another Panel 2")
.Control(portlet => {
this.InitPortlet(portlet);
})
),

Html.X().PortalColumn()
.Cls("x-column-padding")
.Items(
Html.X().Portlet()
.ID("Portlet4")
.Title("Panel 3")
.Control(portlet => {
this.InitPortlet(portlet);
}),

Html.X().Portlet()
.ID("Portlet5")
.Title("Another Panel 3")
.Control(portlet => {
this.InitPortlet(portlet);
})
)
)
),

Html.X().Panel()
.Title("Tab 2")
.Layout(LayoutType.Fit)
.Items(
Html.X().Portal()
.Items(
Html.X().PortalColumn()
.Cls("x-column-padding")
.Items(
Html.X().Portlet()
.ID("Portlet7")
.Title("Another Panel 3")
.Control(portlet => {
this.InitPortlet(portlet);
})
),

Html.X().PortalColumn()
.Cls("x-column-padding")
.Items(
Html.X().Portlet()
.ID("Portlet8")
.Title("Panel 2")
.Icon(Icon.Accept)
.Control(portlet => {
this.InitPortlet(portlet);
}),

Html.X().Portlet()
.ID("Portlet9")
.Title("Another Panel 2")
.Icon(Icon.Accept)
.Control(portlet => {
this.InitPortlet(portlet);
})
),

Html.X().PortalColumn()
.Cls("x-column-padding")
.Items(
Html.X().Portlet()
.ID("Portlet10")
.Title("Another Panel 1")
.Icon(Icon.Accept)
.Control(portlet => {
this.InitPortlet(portlet);
})
)
)
)
)
)
)
</body>
</html>

 
我不是小海 | 园豆:145 (初学一级) | 2013-01-16 15:40

@我不是小海: 

直接 使用,不用this

Qlin | 园豆:2403 (老鸟四级) | 2013-01-16 15:42

@Qlin: 成功了,非常感谢。但是这样这个方法好像就不是本页面类的方法了。那为页面类添加方法的话该如何写呢?

我不是小海 | 园豆:145 (初学一级) | 2013-01-16 15:45

@我不是小海: 

该页面 不是一个类,不存在类成员,是一个html文档, 可以用其它类的方法。

Qlin | 园豆:2403 (老鸟四级) | 2013-01-16 15:49

@Qlin: 再打扰你一下。那我在每张页面.cshtml下都能写this.XX?请问这个是一个什么类。

我不是小海 | 园豆:145 (初学一级) | 2013-01-16 16:05

@我不是小海: 

哦,我没这样写过, 那应该会有 这个页面对应的一个类,this.GetType 看看是什么类型,

Qlin | 园豆:2403 (老鸟四级) | 2013-01-16 16:12

@Qlin: 每张.cshtml页面是一个WebViewPage类,而WebViewPage类派生于WebPageBase类,我给WebPageBase加了InitPortlet这个扩展方法就可以用this啦

我不是小海 | 园豆:145 (初学一级) | 2013-01-16 16:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册