나는이 웹 양식의 Page_Load
방법에 다음 코드 :또 다른 viewstate가 DropDownList로 문제
protected void Page_Load(object sender, EventArgs e)
{
CountrySelectButton.Click += new EventHandler(CountrySelectButton_Click);
if (HomePage.EnableCountrySelector) //always true in in this case
{
if(!IsPostBack)
BindCountrySelectorList();
}
}
BindCountrySelectorList
방법은 다음과 같습니다
private void BindCountrySelectorList()
{
NameValueCollection nvc = HttpUtility.ParseQueryString(HomePage.CountryList);
var ds = nvc.AllKeys.Select(k => new { Text = k, Value = nvc[k] });
CountrySelector.DataSource = ds;
CountrySelector.DataTextField = "Text";
CountrySelector.DataValueField = "Value";
CountrySelector.DataBind();
}
그리고 나는 LinkButton
클릭 이벤트가 처리기는 SelectList
에서 SelectedValue
을 얻습니다.
void CountrySelectButton_Click(object sender, EventArgs e)
{
//get selected
string selectedMarket = CountrySelector.SelectedValue; //this is always the first item...
//set cookie
if (RememberSelection.Checked)
Response.Cookies.Add(new HttpCookie("blah_cookie", selectedMarket) { Expires = DateTime.MaxValue });
//redirect
Response.Redirect(selectedMarket, false);
}
편집 :
이는 DDL과의 LinkButton 정의입니다 :
<asp:DropDownList runat="server" ID="CountrySelector" />
<asp:LinkButton runat="server" ID="CountrySelectButton" Text="Go" />
결과 태그 :
<select name="CountrySelector" id="CountrySelector">
<option value="http://google.com">UK</option>
<option value="http://microsoft.com">US</option>
<option value="http://apple.com">FR</option>
</select>
<a id="CountrySelectButton" href="javascript:__doPostBack('CountrySelectButton','')">Go</a>
최종 편집
의 ViewState가 활성화되어 있지만 SelectedValue
특성 오직 돌아온다. 어떤 항목이 실제로 선택되었는지에 관계없이 목록의 첫 번째 항목. 나는 확실한 것이 빠졌음을 확신하지만 문제를 발견 할 수 없다. 어떤 도움을 많이 주시면 감사하겠습니다.
미리 감사드립니다.
데이브
더 많은 코드가 도움이 같은
프런트 엔드는 볼 수 있었다. – MikeSmithDev
@MikeSmithDev - 특히보고 싶은 것은 무엇입니까? 이것은 뒤에있는 모든 코드가 수행하고 있으므로 내가 제공 할 수있는 것이 무엇인지 확신 할 수 없습니다. – DaveParsons
예, 선택 목록의 코드 앞부분입니다. LinkButton에 대한 이벤트 처리기에 대해 자세히 설명합니다. 링크 버튼 코드 앞. 어떤 일이 일어나고 있는지 디버깅 해봤습니까? 어딘지 모르게 어딘가에서 다시 바인딩하고 있습니까? – MikeSmithDev