当我们需要一个年份下拉列表的时候,排除插件的使用,这里给大家列举三种方法,其中就包含前后台代码混编情况。
年份下拉列表的三种实现方法
方法一:
使用DropDownList控件,在后台动态添加下拉列表的内容。
protected void Page_Load(object sender, EventArgs e)
{
BindYear();
}
private void BindYear()
{
int year = DateTime.Now.Year;
for (int i = 2; i > -9; i--)
{
DropDownList1.Items.Add(new ListItem() { Text = (year + i).ToString(), Value = (year + i).ToString() });
}
}
方法二:
<%= %>前台调用后台方法
<form id="form1" runat="server">
<div>
<select>
<%=GetYearOption() %>
</select>
</div>
</form>
protected string GetYearOption()
{
StringBuilder sbYear = new StringBuilder();
int year = DateTime.Now.Year;
for (int i = 2; i > -9; i--)
{
sbYear.AppendFormat("<option value=\"{0}\">{1}</option>", year + i, year + i);
//【简化形式】
//sbYear.AppendFormat("<option value=\"{0}\">{0}</option>", year + i);
}
return sbYear.ToString();
}
注意:
<%=content %>,若后台content变量是字符串,放到前台会去掉两边的引号
public partial class Default : System.Web.UI.Page
{
protected string content = "myContent";
protected void Page_Load(object sender, EventArgs e)
{
}
}
<head runat="server">
<title></title>
<script type="text/javascript">
if (<%=content %> == "myContent") {
alert("<\%=content \%>=myContent");
}
</script>
</head>
截图如下:
<head runat="server">
<title></title>
<script type="text/javascript">
if (<%=content %>.toString() == "myContent") {
alert("<\%=content \%>=myContent");
}
</script>
</head>
截图如下:
前台正确写法如下:
<head runat="server">
<title></title>
<script type="text/javascript">
//[写法1]
if ('<%=content %>' == "myContent") {
alert("<\%=content \%>=myContent");
}
//[写法2]
if ("<%=content %>" == "myContent") {
alert("<\%=content \%>=myContent");
}
</script>
</head>
方法三:
<% %>直接在前台页面进行代码混编
<form id="form1" runat="server">
<div>
<select>
<%int year = DateTime.Now.Year;
for (int i = 2; i >-9 ; i--)
{%>
<option value="<%=year+i %>guo"><%=year+i %></option>
<%} %>
</select>
</div>
</form>
方法四:
<input type="checkbox" <%if(content=="myContent")Response.Write(" checked='checked' disabled='disabled'"); %> />
<select id="selectDept" class="AddConditionCheckbox">
<% foreach (DataRow dr in deptlistdt.Rows)
Response.Write("<option value='" + dr["department_code"] + "'>" + dr["department_name"] + "</option>");
%>
</select>
<input type="checkbox" <%if(content=="myContent"){%>checked="checked" disabled="disabled"<%} %> />
<select id="selectDept" class="AddConditionCheckbox">
<% foreach (DataRow dr in deptlistdt.Rows)
{ %>
<option value='<%= dr["department_code"] %>'> <%= dr["department_name"] %> </option>
<% } %>
</select>
前台调用后台方法
当用户有权限访问就显示控件,没权限就不显示控件。
判断用户是否有权限:
namespace MixedCode
{
public class AuthorizationHelper
{
public static bool IsValid(string name)
{
if (string.Equals(name, "经理"))
return true;
else
return false;
}
}
}
前台调用AuthorizationHelper类中的方法检查用户权限,注意在前台引用AuthorizationHelper类所在的命名空间。
此处引用语句是<%@ Import Namespace=”MixedCode” %>
protected void Page_Load(object sender, EventArgs e)
{
<!--当角色为"经理"时下拉列表显示,为其他角色时下拉列表不显示-->
Session["role"] = "经理";
}
<body>
<form id="form1" runat="server">
<div>
<%if(AuthorizationHelper.IsValid(Session["role"].ToString()))
{%>
<select>
<%int year = DateTime.Now.Year;
for (int i = 2; i >-9 ; i--)
{%>
<option value="<%=year+i %>guo"><%=year+i %></option>
<%} %>
</select>
<%}%>
</div>
</form>
</body>
<%= %>与<%: %>的区别
后台代码:
public partial class Difference : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected string GetString()
{
return "<script type=\"text/javascript\">alert('后台返回');</script>";
}
}
<%=%>前台调用:
<body>
<form id="form1" runat="server">
<div>
<%=GetString() %>
</div>
</form>
</body>
<%:%>前台调用:
<body>
<form id="form1" runat="server">
<div>
<%:GetString() %>
</div>
</form>
</body>