我收到 InvalidCastException 异常
I'm getting an exception of InvalidCastException
我想从上一页获取 asp
按钮 ID,但出现异常。
这是我的 C#
代码
public partial class ADD_MOBILE : System.Web.UI.Page
{
string BUTN_ID;
protected void Page_Load(object sender, EventArgs e)
{
Button button = (Button)sender;
string BUTTON_CLICKER_ID = button.ID;
BUTN_ID = BUTTON_CLICKER_ID;
}
protected void saveMOBILE_Click(object sender, EventArgs e)
{
if(BUTN_ID == "samsung"){ ... }
}
}
此时我遇到异常 Button button = (Button)sender;
为什么?
好的,在查看您的代码后,您似乎想要获取按钮 ID,以便您可以基于该 ID 处理一些代码。好吧,让我说清楚,页面加载事件永远不会给你导致发件人对象回发的控件,即使它在你单击按钮时被触发并回发,但它不会在发件人对象中包含控件的信息发回来了。
为此,您可能想使用此 James Johnson 的回答中的方法来了解哪个控件导致回发:
/// <summary>
/// Retrieves the control that caused the postback.
/// </summary>
/// <param name="page"></param>
/// <returns></returns>
private Control GetControlThatCausedPostBack(Page page)
{
//initialize a control and set it to null
Control ctrl = null;
//get the event target name and find the control
string ctrlName = page.Request.Params.Get("__EVENTTARGET");
if (!String.IsNullOrEmpty(ctrlName))
ctrl = page.FindControl(ctrlName);
//return the control to the calling method
return ctrl;
}
这将 return 您可以进一步深入研究的 Control
对象。
否则,在您的情况下,合适而巧妙的方法是这样做:
public partial class ADD_MOBILE : System.Web.UI.Page
{
string BUTN_ID; // I do not think it is necessary here.
protected void Page_Load(object sender, EventArgs e)
{
}
protected void saveMOBILE_Click(object sender, EventArgs e)
{
Button button = (Button)sender;
if(button is null) return; // you can use == instead of keyword 'is'
if(button.ID.Equals("samsung"))
{
// DoStuff();
}
}
}
希望你觉得有用。
我想从上一页获取 asp
按钮 ID,但出现异常。
这是我的 C#
public partial class ADD_MOBILE : System.Web.UI.Page
{
string BUTN_ID;
protected void Page_Load(object sender, EventArgs e)
{
Button button = (Button)sender;
string BUTTON_CLICKER_ID = button.ID;
BUTN_ID = BUTTON_CLICKER_ID;
}
protected void saveMOBILE_Click(object sender, EventArgs e)
{
if(BUTN_ID == "samsung"){ ... }
}
}
此时我遇到异常 Button button = (Button)sender;
为什么?
好的,在查看您的代码后,您似乎想要获取按钮 ID,以便您可以基于该 ID 处理一些代码。好吧,让我说清楚,页面加载事件永远不会给你导致发件人对象回发的控件,即使它在你单击按钮时被触发并回发,但它不会在发件人对象中包含控件的信息发回来了。
为此,您可能想使用此 James Johnson 的回答中的方法来了解哪个控件导致回发:
/// <summary>
/// Retrieves the control that caused the postback.
/// </summary>
/// <param name="page"></param>
/// <returns></returns>
private Control GetControlThatCausedPostBack(Page page)
{
//initialize a control and set it to null
Control ctrl = null;
//get the event target name and find the control
string ctrlName = page.Request.Params.Get("__EVENTTARGET");
if (!String.IsNullOrEmpty(ctrlName))
ctrl = page.FindControl(ctrlName);
//return the control to the calling method
return ctrl;
}
这将 return 您可以进一步深入研究的 Control
对象。
否则,在您的情况下,合适而巧妙的方法是这样做:
public partial class ADD_MOBILE : System.Web.UI.Page
{
string BUTN_ID; // I do not think it is necessary here.
protected void Page_Load(object sender, EventArgs e)
{
}
protected void saveMOBILE_Click(object sender, EventArgs e)
{
Button button = (Button)sender;
if(button is null) return; // you can use == instead of keyword 'is'
if(button.ID.Equals("samsung"))
{
// DoStuff();
}
}
}
希望你觉得有用。