И я получаю сообщение об ошибке, что тип содержимого недействителен.
У вас есть эта проблема, потому что действие является запросом Get, переданный параметр имеет форму строки запроса , поэтому
string firstName = Request.Form["dropdown1"];
следует заменить на
string firstName =Request.Query["FirstName"];
А затем использовать Ajax, чтобы получить как ID, так и firstName в View, это моя демонстрация, надеюсь, она вам поможет. :
Контроллер:
public IActionResult DropList()
{
ViewBag.message = new List<PersonModel>()
{
new PersonModel(){ ID=1,FirstName="AA"},
new PersonModel(){ ID=2,FirstName="BB"},
new PersonModel(){ ID=3,FirstName="CC"},
};
return View();
}
[HttpGet("[action]")]
public IActionResult NewPage(string dropdown1)
{
string firstName =Request.Query["FirstName"];
int intID = Convert.ToInt32(dropdown1);
List<PersonModel> data = new List<PersonModel>()
{
new PersonModel()
{
ID = intID,
FirstName = firstName
}
};
TempData["Data"] = System.Text.Json.JsonSerializer.Serialize(data);
return RedirectToAction("NewPage", "NewPage");
}
Модель:
public class PersonModel
{
public int ID { get; set; }
public string FirstName { get; set; }
}
Вид:
<form asp-action="NewPage" method="get">
<select name="dropdown1" asp-items="@(new SelectList(ViewBag.message, "ID", "FirstName"))"></select>
<input id="Submit1" type="submit" value="submit" />
</form>
@section Scripts{
<script>
$(document).ready(function () {
$("form").submit(function () {
event.preventDefault();
var text = $("select[name=dropdown1] option:selected").text();
var val = $("select[name=dropdown1] option:selected").val();
$.ajax({
type: 'Get',
url: '/NewPage?dropdown1=' + val + "&firstName=" + text,
});
})
});
</script>
}
Результат: введите описание изображения здесь