Asp.net前后台代码混编

当我们需要一个年份下拉列表的时候,排除插件的使用,这里给大家列举三种方法,其中就包含前后台代码混编情况。

年份下拉列表的三种实现方法

方法一:
使用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>

这里写图片描述
这里写图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

changuncle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值