Я использую настроенное ASP.NET CreateUserWizard
в своем веб-приложении.
Здесь я использовал dropdownlist
для заполнения стран при регистрации пользователя.В page load
он заполняет страны, как и ожидалось.
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);
Но когда я пытаюсь получить значения из dropdownlist
в событии OnCreatedUser
, возникает ошибка: 1011 *
System.FormatException: входная строка была в неправильном формате
То, что я делаю в это 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);
}
}
Любые идеи будут оценены.Спасибо