在我现有的项目中,我仍在理解以前开发人员的代码。我不确定如何使用HTML格式的Eval
。
我在html表单上有一个onclick
操作,该操作会根据用户名,商品编号和文档类型下载文件。
它包含DocType=10
的硬编码值。
应该是:
Group 1 = 10
Group 2 = 20
Group 3 = 30
代码段:
UserControl.ascx
<a href="#" onclick="openDialog('/SitePages/FileDownload.aspx?DocType=10&ItemNo=<%#Eval("ItemNo")%>&CustomerID=<%#Eval("CustomerID")%>')">
UserControl.ascx.cs
TBL_USER_PROFILEProvider uprovider = new TBL_USER_PROFILEProvider();
int DOC_TYPE;
// Document Types
const int G1_DOC_TYPE = 10;
const int G2_DOC_TYPE = 20;
const int G3_DOC_TYPE = 30;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string userName = SPContext.Current.Web.CurrentUser.Name;
TBL_USER_PROFILE p = uprovider.GetUser(userName);
if (p != null)
{
// get group permissions
List<string> G1List = uprovider.GetAccessByModuleName(p.UserProfileID, "Group1");
List<string> G2List = uprovider.GetAccessByModuleName(p.UserProfileID, "Group2");
List<string> G3List = uprovider.GetAccessByModuleName(p.UserProfileID, "Group3");
// check doc type and deny access if not any
if (G1List.Count != 0)
{
DOC_TYPE = G1_DOC_TYPE;
}
else if (G2List.Count != 0)
{
DOC_TYPE = G2_DOC_TYPE;
}
else if (G3List.Count != 0)
{
DOC_TYPE = G3_DOC_TYPE;
}
else
{
Response.Redirect("/SitePages/AccessDeny.aspx");
}
}
}
}
我可以知道如何将DOC_TYPE
的值从代码中拉到CS表单中吗?
p.s。 DOC_TYPE
是DocumentType
表中的int
,TBL_DOCUMENT
。
在@ tetsuya-yamamoto的答案后更新:
UserControl.ascx
<a href="#" runat="server" onclick="openDialog('/SitePages/FileDownload.aspx?DocType=<%# DocType %>&ItemNo=<%#Eval("ItemNo")%>&CustomerID=<%#Eval("CustomerID")%>')">
UserControl.ascx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// other logic here
if (G1List.Count != 0)
{
DOC_TYPE = G1_DOC_TYPE;
}
else if (G2List.Count != 0)
{
DOC_TYPE = G2_DOC_TYPE;
}
else if (G3List.Count != 0)
{
DOC_TYPE = G3_DOC_TYPE;
}
else
{
Response.Redirect("/SitePages/AccessDeny.aspx");
}
Page.DataBind();
}
}
我明天将进行测试,因为直到那时我仍无法访问服务器。
如果我纠正错误,请纠正我。谢谢!
答案 0 :(得分:1)
由于您有一个带有默认访问修饰符的int
变量,因此您需要创建一个具有public
或protected
访问修饰符的属性,该属性的数据类型与页面标记中的可见性相同:
int DOC_TYPE;
public int DocType
{
get
{
return DOC_TYPE;
}
}
然后,您可以使用投影语法DocType
提供<%= DocType %>
属性:
<a href="#" onclick="openDialog('/SitePages/FileDownload.aspx?DocType=<%= DocType %>&ItemNo=<%#Eval("ItemNo")%>&CustomerID=<%#Eval("CustomerID")%>')">
如果要在服务器控件标记中使用该属性(即具有runat="server"
属性),则应使用<%# DocType %>
绑定语法而不是<%= DocType %>
投影语法并调用{{1 }} Page.DataBind()
方法:
Page_Load