私はdatatable
をループし、自分のHTMLをaspx Webページで作成しています。コードは正常に動作していますが、HTMLソースにイベントハンドラ関数の名前が表示されています。以下のように。asp.netの動的コントロールのメソッド名を非表示
HTMLソースからonclick関数名を非表示にする方法がありますが、隠しフィールドも表示されません。私は他の方法を使用することに開放しています。
<div>
<a onclick="Role_Click;" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$ctl01','')">OEEC</a>
<input type="hidden" name="ctl00$ContentPlaceHolder1$ctl02" value="1|OEEC">
</div>
以下は私のC#コードです。
public partial class Home : System.Web.UI.Page
{
BAL bal = new BAL();
string message = "";
int messageStateId;
DataTable dtEmployeeRoles;
protected void Page_Load(object sender, EventArgs e)
{
LoadEmployeeRoles();
}
void LoadEmployeeRoles()
{
Employee employee = (Employee)Session["CurrentEmployee"];
dtEmployeeRoles = bal.GetEmployeeRoles(employee, ref message, ref messageStateId);
foreach (DataRow dr in dtEmployeeRoles.Rows)
{
HtmlGenericControl roleDiv = new HtmlGenericControl("div");
LinkButton roleButton = new LinkButton();
HiddenField hfRoleID = new HiddenField();
roleButton.Click += roleButton_Click;
roleButton.OnClientClick = "Role_Click";
roleButton.Text = dr["RoleName"].ToString();
hfRoleID.Value = dr["RoleID"].ToString() + "|" + dr["RoleName"].ToString();
roleDiv.Controls.Add(roleButton);
roleDiv.Controls.Add(hfRoleID);
roles.Controls.Add(roleDiv);
}
}
void roleButton_Click(object sender, EventArgs e)
{
LinkButton lb = (LinkButton)sender;
HiddenField hf = new HiddenField();
Role role = new Role();
role.ID = 0;
role.Name = null;
foreach (Control c in lb.Parent.Controls)
{
if (c is HiddenField)
{
hf = c as HiddenField;
role.ID = Convert.ToInt32(hf.Value.ToString().Split('|')[0]);
role.Name = hf.Value.ToString().Split('|')[1];
}
}
Session["CurrentRole"] = role;
if (role.ID == 1)
{
Response.Redirect("~/Page1.aspx");
}
else
{
Response.Redirect("~/Page2.aspx");
}
}
}
ユーザーのブラウザでHTMLコードのメソッド名と非表示フィールドを非表示にしますか? –
はい、ユーザーは非表示のフィールド値で再生できません – braceyourself