這是我對onchange
事件價值爲HTML不會在服務器端讀取
Javascript代碼功能:
function optionsModel() {
var x = document.getElementById("model");
var option = document.createElement("option");
var makeValue = document.getElementById("make").value;
x.innerHTML = "";
option.text = "Model";
x.add(option);
option.innerHTML = "Model";
if (makeValue == "ALFA ROMEO") {
var opt = document.createElement('option');
opt.innerHTML = "156";
x.appendChild(opt);
}
else if (makeValue == "AUDI") {
var audi = ["A3", "A4", "TT"];
for (var i = 0; i < 3; i++) {
var opt = document.createElement('option');
opt.value = audi[i];
opt.innerHTML = audi[i];
x.appendChild(opt);
}
}
}
.aspx
+ HTML代碼:
<body>
<div class="container form-group">
<div class="row">
<form runat="server">
<div class="col-md-6">
<select class="form-control" name="Make" id="make" runat="server" onchange=" return optionsModel()">
<option value="select" selected>Select Make</option>
<option value="ALFA ROMEO">ALFA ROMEO</option>
<option value="AUDI">AUDI</option>
</select></div>
<div class="col-md-6"> <select class="form-control" name="Model" id="model" runat="server">
<option value="Model">Model</option>
</select></div>
aspx.cs
protected void Button1_Click(object sender, EventArgs e)
{
string modelValue = this.model.Value;
string makeValue = this.make.Value;
}
當我在Make Select標籤中選擇ALFA ROMEO時,Model標籤將顯示特定的選項,但是當我按下按鈕時,它會給modelValue一個「Model」。這意味着來自JS的值不會被傳送服務器端。我怎樣才能在服務器端獲得這些值?
您正在混合服務器和客戶端代碼,就好像他們知道對方在做什麼一樣。您在客戶端JavaScript上做的任何更改,您沒有專門發送到服務器都會丟失。也許看看AJAX並在服務器上執行所有選項邏輯。 –
這就是爲什麼。我應該使用AJAX先生嗎?因爲我不知道如何做AJAX。即時通訊只是在這種語言的新。 @AnthonyHorne –
開始使用非常容易,尤其是在視覺工作室中。搜索Ajax.Net和updatepanel。有很多很多的例子。您只需在頁面頂部添加一個腳本管理器,然後在控件周圍添加一個更新面板。然後對像dropdown_change()等正常事件進行操作。由於它部分提交,它通常很快,用戶通常不知道服務器旅程正在發生。當你這樣做的時候還要看進度條。 –