我正在创建一个带有 asp 链接按钮的 webpart,它需要在模式弹出窗口中打开一个可配置的页面。
模式弹出窗口打开,但立即关闭。我放了 href # 但它不起作用。
如果我检查生成的html是:
<a id="ctl00_ctl38_g_69332c4e_2a87_4bb4_ad70_f7debbd14e91_LnkButton" onclick="OpenModalPopup('www.google.com', '800', '300' );" href="javascript:__doPostBack('ctl00$ctl38$g_69332c4e_2a87_4bb4_ad70_f7debbd14e91$LnkButton','')">
ascx 或 webpart 文件
<script type="text/javascript">
function OpenModalPopup(pageUrl, widthParameter, heightParameter) {
var options = { url: pageUrl, width: widthParameter, height: heightParameter, showClose: true };
SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);
}
</script>
<asp:LinkButton CssClass="pwcLinkButton" ID="LnkButton" runat="server" href="#"></asp:LinkButton>
。CS
using System;
using System.ComponentModel;
using System.Web.UI.WebControls.WebParts;
namespace xx.SP.xx.WebParts.VisualWebParts.LinkButton
{
[ToolboxItemAttribute(false)]
public partial class LinkButton : WebPart
{
private string _LinkText;
private Uri _Link;
private Boolean _OpenModal;
private int _Width;
private int _Height;
[WebBrowsable(true), WebDisplayName("LinkText"), WebDescription("Text for the link"),
Personalizable(PersonalizationScope.Shared), Category("xx- xx"),
System.ComponentModel.DefaultValue("")]
public string LinkText
{
get { return _LinkText; }
set { _LinkText = value; }
}
[WebBrowsable(true), WebDisplayName("Link"), WebDescription("Link"),
Personalizable(PersonalizationScope.Shared), Category("xx- xx"),
System.ComponentModel.DefaultValue("")]
public Uri Link
{
get { return _Link; }
set { _Link = value; }
}
[WebBrowsable(true), WebDisplayName("OpenModal"), WebDescription("OpenModal"),
Personalizable(PersonalizationScope.Shared), Category("xx - xx"),
System.ComponentModel.DefaultValue("")]
public Boolean OpenModal
{
get { return _OpenModal; }
set { _OpenModal = value; }
}
[WebBrowsable(true), WebDisplayName("Width"), WebDescription("Width"),
Personalizable(PersonalizationScope.Shared), Category("xx- xx"),
System.ComponentModel.DefaultValue("")]
public int WidthPopup
{
get { return _Width; }
set { _Width = value; }
}
[WebBrowsable(true), WebDisplayName("Height"), WebDescription("Height"),
Personalizable(PersonalizationScope.Shared), Category("xx- xx"),
System.ComponentModel.DefaultValue("")]
public int HeightPopup
{
get { return _Height; }
set { _Height = value; }
}
// Uncomment the following SecurityPermission attribute only when doing Performance Profiling on a farm solution
// using the Instrumentation method, and then remove the SecurityPermission attribute when the code is ready
// for production. Because the SecurityPermission attribute bypasses the security check for callers of
// your constructor, it's not recommended for production purposes.
// [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Assert, UnmanagedCode = true)]
public LinkButton()
{
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
InitializeControl();
}
protected void Page_Load(object sender, EventArgs e)
{
if (LnkButton != null && Link !=null && LinkText != null)
{
LnkButton.Text = LinkText;
if (OpenModal)
{
LnkButton.Attributes.Add("onclick", "OpenModalPopup('" + Link.ToString() + "', '" + WidthPopup.ToString() + "', '" + HeightPopup.ToString() + "' );");
}
else
{
LnkButton.Attributes.Remove("onclick");
LnkButton.PostBackUrl = Link.ToString();
}
}
}
}
}