如何将图像添加到ASP.NET用户控制器中的图像按钮
我有2个项目。一个是主要的WebForm项目,第二个是用于我的用户控件的库项目。该库不使用文件扩展名ASCX。我必须对此清楚。我的目标是创建一个包含1个文本框,1个图像按钮,2个下拉列表,1个按钮和1个日历的用户控制器。基本上是日期选择器控制器。到目前为止,一切都在起作用。我可以修改日历,居民月(下拉)和年(下拉)。所有按钮和动作都正确地表现了我期望的行为。我单击它时,即使是图像按钮;它显示日历罚款。我在分配ImageUrl属性时遇到了问题。我已经将图像复制到图书馆项目,主项目,而无效。运行主项目时,只是显示一个损坏的图像。两个项目都有相同的文件夹和文件的名称(〜/images/calendar4.png“;)。我在UserController和Main Project中添加了此URL,并且无效。
我在这两个项目上都尝试了以下语法(一次): (在主项目上)
string imgsource = "~/Images/calendar4.png";
ucpCalendar.ImageUrl = imgsource;
我尝试了以下语法:
string FullPathVirtual = Server.MapPath("~/Images/calendar4.png");
ucpCalendar.ImageUrl = FullPathVirtual;
我尝试了此:
string path = (Server.MapPath(".") + "//Images//" + "calendar4.png");
string imgPath = path.Replace("\\", "/").Replace("//", "/");
ucpCalendar.ImageUrl = imgPath ;
这是我的usercontroller代码(我试图进行随机映像搜索以查看它是否找到图片。仍然没有起作用):
public class pCalendar : UserControl
{
protected Calendar cdatepicker;
protected DropDownList ddrYear;
protected DropDownList ddrMonth;
protected ImageButton imbcalendar;
protected TextBox txtbdatedisplay;
protected Button btntoday;
public pCalendar()
{
txtbdatedisplay = new TextBox();
imbcalendar = new ImageButton();
ddrMonth = new DropDownList();
ddrYear = new DropDownList();
btntoday = new Button();
cdatepicker = new Calendar();
Controls.Add(new LiteralControl("<table cellspacing=\"0\" cellpadding=\"0\">"));
Controls.Add(new LiteralControl(" <tr>"));
Controls.Add(new LiteralControl(" <td>"));
Controls.Add(txtbdatedisplay);
Controls.Add(imbcalendar);
Controls.Add(new LiteralControl(" </td>"));
Controls.Add(new LiteralControl(" </tr>"));
Controls.Add(new LiteralControl(" <tr>"));
Controls.Add(new LiteralControl(" <td>"));
Controls.Add(ddrMonth);
Controls.Add(ddrYear);
Controls.Add(btntoday);
Controls.Add(new LiteralControl(" </td>"));
Controls.Add(new LiteralControl(" </tr>"));
Controls.Add(new LiteralControl(" <tr>"));
Controls.Add(new LiteralControl(" <td>"));
Controls.Add(cdatepicker);
Controls.Add(new LiteralControl(" </td>"));
Controls.Add(new LiteralControl(" </tr>"));
Controls.Add(new LiteralControl("</table>"));
}
protected override void OnInit(EventArgs e)
{
cdatepicker.VisibleDate = cdatepicker.TodaysDate;
Hide();
ControllersBasicInfo();
int myYear = System.DateTime.Now.Year;
int myMonth = System.DateTime.Now.Month;
for (int i = 0; i < 101; i++)
{
ddrYear.Items.Add((myYear - i).ToString());
}
ddrYear.SelectedValue = myYear.ToString();
ddrMonth.SelectedValue = myMonth.ToString();
ddrMonth.AutoPostBack = true;
ddrYear.AutoPostBack = true;
ddrMonth.SelectedIndexChanged += new System.EventHandler(SetCalendarVisibleDate_SelectedIndexChanged);
ddrYear.SelectedIndexChanged += new System.EventHandler(SetCalendarVisibleDate_SelectedIndexChanged);
if (AutoPostBack)
{
ddrMonth.SelectedIndexChanged += new System.EventHandler(ddl_SelectedIndexChanged);
ddrYear.SelectedIndexChanged += new System.EventHandler(ddl_SelectedIndexChanged);
}
imbcalendar.Click+=imbcalendar_Click;
btntoday.Click += btntoday_Click;
cdatepicker.SelectionChanged += cdatepicker_SelectionChanged;
cdatepicker.DayRender += cdatepicker_DayRender;
base.OnInit(e);
}
private void ControllersBasicInfo()
{
string FullPathVirtual = PickRandomImage2();
//imbcalendar.ImageUrl = "~/Images/calendar4.png";
imbcalendar.ImageUrl = FullPathVirtual;
}
private string PickRandomImage2()
{
Random rnd = new Random();
string[] image = Directory.GetFiles(MapPath("~/image"), "*.jpg");
string imageDisplay = image[rnd.Next(image.Length)];
return imageDisplay;
}
public void BindData()
{
BindDataMonth();
}
public string ImageUrl
{
get
{
return this.imbcalendar.ImageUrl;
}
set
{
this.imbcalendar.ImageUrl = value;
}
}
}
WebForm代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Calendar.aspx.cs" Inherits="IAS.Calendar" %>
<%@ Register Assembly="IAS.Controls" Namespace="IAS.Controls" TagPrefix="uc" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<script src="/scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="/scripts/common.min.js" type="text/javascript"></script>
<script src="/scripts/jquery.extend-1.5.0.min.js" type="text/javascript"></script>
<script src="/Calendar/jscal2.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="/Calendar/CSS/jscal2.css" />
<link rel="stylesheet" type="text/css" href="/CSS/Common.css" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<tr>
<td>
<uc:pCalendar ID="ucpCalendar" runat="server"></uc:pCalendar>
</td>
</tr>
</table>
<div>
</form>
C#.Net背后的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using lktec.Utils;
namespace TestCalendar
{
public partial class Calendar : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ucpCalendar.BindData();
//ucpCalendar.ImageUrl = "~/Images/calendar4.png";
}
}
}
}
这是正在发生的事情的图像: 带有其他信息的日历显示
我只对我的问题提出了相关代码。如果您需要完整的代码,请告诉我。这是很多代码。我不确定我在做什么错。
这是要添加的建议的代码: 使用输入标签:
string inputstring = @"<input type=""image""
alt=""Clear button""
src=""C:/Users/SANOZUKE/Documents/Visual Studio 2013/Projects/MHPPROJECT-English/IAS.root/IAS/IAS/Images/calendar4.png""
onserverclick=""imbcalendar_Click""
runat=""server""
id=""imbcalendar"" />";
不幸的是,这无效。仍然没有在控制器上显示图像。
I have 2 projects. One is the main webform project and the second is a library project for my user controls. This library doesn't use file extension ascx. I have to be clear on this. My objective is to create an user controller that contains 1 textbox, 1 image button, 2 dropdown, 1 button and 1 calendar. Basically is a date picker controller. So far, everything is working. I can modify the calendar, populate month(dropdown) and year (dropdown). All buttons and actions behave correctly how I expect to behave. Even the image button when I click it; it display the calendar fine. I am having problem assigning the imageurl properties. I have copy the image to the library project, main project and nothing works. When running the main project is just shows a broken image. both project have the same name for the folder and file (~/Images/calendar4.png";). I have added this url in the usercontroller and in the main project and none works.
I have tried the following syntax on both project (one at a time):
(On Main Project)
string imgsource = "~/Images/calendar4.png";
ucpCalendar.ImageUrl = imgsource;
The I tried the following syntax:
string FullPathVirtual = Server.MapPath("~/Images/calendar4.png");
ucpCalendar.ImageUrl = FullPathVirtual;
The I tried this one:
string path = (Server.MapPath(".") + "//Images//" + "calendar4.png");
string imgPath = path.Replace("\\", "/").Replace("//", "/");
ucpCalendar.ImageUrl = imgPath ;
Here is my usercontroller code (I was trying to do a random image search to see if it finds a picture. Still didn't work):
public class pCalendar : UserControl
{
protected Calendar cdatepicker;
protected DropDownList ddrYear;
protected DropDownList ddrMonth;
protected ImageButton imbcalendar;
protected TextBox txtbdatedisplay;
protected Button btntoday;
public pCalendar()
{
txtbdatedisplay = new TextBox();
imbcalendar = new ImageButton();
ddrMonth = new DropDownList();
ddrYear = new DropDownList();
btntoday = new Button();
cdatepicker = new Calendar();
Controls.Add(new LiteralControl("<table cellspacing=\"0\" cellpadding=\"0\">"));
Controls.Add(new LiteralControl(" <tr>"));
Controls.Add(new LiteralControl(" <td>"));
Controls.Add(txtbdatedisplay);
Controls.Add(imbcalendar);
Controls.Add(new LiteralControl(" </td>"));
Controls.Add(new LiteralControl(" </tr>"));
Controls.Add(new LiteralControl(" <tr>"));
Controls.Add(new LiteralControl(" <td>"));
Controls.Add(ddrMonth);
Controls.Add(ddrYear);
Controls.Add(btntoday);
Controls.Add(new LiteralControl(" </td>"));
Controls.Add(new LiteralControl(" </tr>"));
Controls.Add(new LiteralControl(" <tr>"));
Controls.Add(new LiteralControl(" <td>"));
Controls.Add(cdatepicker);
Controls.Add(new LiteralControl(" </td>"));
Controls.Add(new LiteralControl(" </tr>"));
Controls.Add(new LiteralControl("</table>"));
}
protected override void OnInit(EventArgs e)
{
cdatepicker.VisibleDate = cdatepicker.TodaysDate;
Hide();
ControllersBasicInfo();
int myYear = System.DateTime.Now.Year;
int myMonth = System.DateTime.Now.Month;
for (int i = 0; i < 101; i++)
{
ddrYear.Items.Add((myYear - i).ToString());
}
ddrYear.SelectedValue = myYear.ToString();
ddrMonth.SelectedValue = myMonth.ToString();
ddrMonth.AutoPostBack = true;
ddrYear.AutoPostBack = true;
ddrMonth.SelectedIndexChanged += new System.EventHandler(SetCalendarVisibleDate_SelectedIndexChanged);
ddrYear.SelectedIndexChanged += new System.EventHandler(SetCalendarVisibleDate_SelectedIndexChanged);
if (AutoPostBack)
{
ddrMonth.SelectedIndexChanged += new System.EventHandler(ddl_SelectedIndexChanged);
ddrYear.SelectedIndexChanged += new System.EventHandler(ddl_SelectedIndexChanged);
}
imbcalendar.Click+=imbcalendar_Click;
btntoday.Click += btntoday_Click;
cdatepicker.SelectionChanged += cdatepicker_SelectionChanged;
cdatepicker.DayRender += cdatepicker_DayRender;
base.OnInit(e);
}
private void ControllersBasicInfo()
{
string FullPathVirtual = PickRandomImage2();
//imbcalendar.ImageUrl = "~/Images/calendar4.png";
imbcalendar.ImageUrl = FullPathVirtual;
}
private string PickRandomImage2()
{
Random rnd = new Random();
string[] image = Directory.GetFiles(MapPath("~/image"), "*.jpg");
string imageDisplay = image[rnd.Next(image.Length)];
return imageDisplay;
}
public void BindData()
{
BindDataMonth();
}
public string ImageUrl
{
get
{
return this.imbcalendar.ImageUrl;
}
set
{
this.imbcalendar.ImageUrl = value;
}
}
}
the webform code:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Calendar.aspx.cs" Inherits="IAS.Calendar" %>
<%@ Register Assembly="IAS.Controls" Namespace="IAS.Controls" TagPrefix="uc" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<script src="/scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="/scripts/common.min.js" type="text/javascript"></script>
<script src="/scripts/jquery.extend-1.5.0.min.js" type="text/javascript"></script>
<script src="/Calendar/jscal2.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="/Calendar/CSS/jscal2.css" />
<link rel="stylesheet" type="text/css" href="/CSS/Common.css" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<tr>
<td>
<uc:pCalendar ID="ucpCalendar" runat="server"></uc:pCalendar>
</td>
</tr>
</table>
<div>
</form>
Code behind C#.net :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using lktec.Utils;
namespace TestCalendar
{
public partial class Calendar : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ucpCalendar.BindData();
//ucpCalendar.ImageUrl = "~/Images/calendar4.png";
}
}
}
}
Here is an image of what is happening:
Calendar display with other info
I have put only relevant code to my issue. If you need the full code please let me know. It is a lot of code. I am not sure what I am doing wrong.
Here is the suggested code to add:
using input tag:
string inputstring = @"<input type=""image""
alt=""Clear button""
src=""C:/Users/SANOZUKE/Documents/Visual Studio 2013/Projects/MHPPROJECT-English/IAS.root/IAS/IAS/Images/calendar4.png""
onserverclick=""imbcalendar_Click""
runat=""server""
id=""imbcalendar"" />";
Unfortunately, this didn't work. Still shows no image on the controller.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论