웹 응용 프로그램에 사용자 정의 ASP.NET CreateUserWizard
을 사용하고 있습니다.문제가있는 ASP.NET 사용자 정의 CreateUserWizard에 DropDownList가 있습니다
여기서는 사용자 등록시 국가를 채우는 데 dropdownlist
을 사용했습니다. page load
에서 예상대로 국가를 채 웁니다. 나는 그것이 나에게
System.FormatException을 말하는 오류를 생성하는
OnCreatedUser
이벤트에dropdownlist
에서 값을 얻기 위해 시도 할 때var query = GetNationality(); var national = (DropDownList)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("Nationality"); national.DataSource = query; national.DataTextField = "CountryName"; national.DataValueField = "Id"; national.DataBind(); var item = new ListItem("Select Country", ""); national.Items.Insert(0, item);
는하지만 : 입력 문자열의 형식이 잘못되었습니다
내가 뭐하는거야 OnCreatedUser
은
var national = (DropDownList)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("Nationality");
var nationality = Convert.ToInt32(national.SelectedValue); <<-(where the error is)
페이지의 전체 코드는 어떤 아이디어가 감사합니다
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillDropdown();
}
}
protected void RegisterUser_CreatedUser(object sender, EventArgs e)
{
var newUser = Membership.GetUser(RegisterUser.UserName);
var newUserId = (Guid)newUser.ProviderUserKey;
var name1 = (TextBox)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("fname");
var name2 = (TextBox)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("lname");
var comp = (TextBox)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("Company");
var post = (TextBox)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("Position");
var birth = (TextBox)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("Bday");
var mob = (TextBox)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("Mobile");
var aphone = (TextBox)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("altPhone");
var aemail = (TextBox)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("altEmail");
var national = (DropDownList)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("Nationality");
var news = (CheckBox)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("Newsletter");
var title = tit.Text.Trim();
var nationality = national.Text;
var preferred = method.Text.Trim();
var newsleter = news.Checked;
FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false /* createPersistentCookie */);
var continueUrl = RegisterUser.ContinueDestinationPageUrl;
if (String.IsNullOrEmpty(continueUrl))
{
continueUrl = "~/";
}
Response.Redirect(continueUrl);
}
public void FillDropdown()
{
var query = GetNationality();
var national = (DropDownList)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("Nationality");
national.DataSource = query;
national.DataTextField = "CountryName";
national.DataValueField = "Id";
national.DataBind();
var item = new ListItem("Select Country", "");
national.Items.Insert(0, item);
}
}
이하입니다. 감사
var 국적 줄에 중단 점을 설정하십시오. 당신은 국가에 어떤 가치가 있습니까? 어떤 값이 national.SelectedValue입니까? –
예 이미 그랬지만 값을 가져 오지 않았습니다 –
드롭 다운 또는 createuserwizard에 대해 viewstate가 활성화되어 있는지 확인하십시오. –