这可以用 jQuery 来完成。我的做法是这样的。假设您有一个看起来像这样的表单:
<form method="post" action="#">
<select id="myList" name="myList">
<option value="1">Value 1</option>
<option value="2">Value 2</option>
</select>
<input type="text" id="newValue" name="newValue" />
<a href="#" id="btn">add new value</a>
<input type="submit" value="Submit">
</form>
其中 myList 是您要添加新值并刷新的下拉列表,newValue 是用于接收要添加到下拉列表 (myList) 的新值的文本字段,带有 id btn 的链接是添加按钮。您可以添加一个看起来像这样的 jQuery:
<script type="text/javascript">
$(document).ready(function () {
$("#btn").click(function (event) {
event.preventDefault();
$.post("/home/addvalue", { value: $("#newValue").val() }, function (result) {
if (result != null) {
$("#myList").append("<option value='" + result.id + "' selected='selected'>" + result.text + "</option>");
}
});
});
});
</script>
当您单击链接(btn)时,我会从文本框中收集值(以及该值)并将 POST(表单提交)发送到服务器。我猜您希望服务器给出某种答案,其中包括新插入的值的 id。如果服务器发回该新 id,然后我将新结果附加到列表中(并将其设置为选定的)
在服务器端,您的代码可能看起来像这样
[HttpPost]
public JsonResult AddValue(FormCollection collection)
{
//do database inser for the new value and get the id
var response = new Dictionary<string, object>();
response.Add("id", 3);//3 here represents that last id
response.Add("text", collection["value"]); //the value you sent for the new option
return Json(response);
}
您收到 POST(ed) 数据并保存到数据库。一旦保存了值并且您将新的 id 保存到字典中,然后您将序列化并作为 json 发送回上面的 javascript。这将更新您的表单,因此当您实际点击提交 myList 值时,您将成为新值。希望这会有所帮助(如果有,请接受答案)