我是网络方面的新手,我目前正在努力使用Razor Pages。在这种情况下,有人可以解释我从控制中获取值的方法。
如何提取所选内容并将其传递给后面的代码变量;
@page
@model ViewToVM.Pages.IndexModel
@{
ViewData["Title"] = "Index";
}
<h2>Index</h2>
<section id="cityList">
<select id="selectedCity">
@using Model;
@foreach(City city in Model.Cities)
{
<option>@city.SelectedCity</option>
}
</select>
</section>
这个代码隐藏在
之后using Microsoft.AspNetCore.Mvc.RazorPages;
using System.Collections.Generic;
using ViewToVM.Model;
namespace ViewToVM.Pages
{
public class IndexModel : PageModel
{
public List<City> Cities = new List<City>()
{
new City("Sofia"),
new City("Plovdiv"),
new City("Velingrad")
};
public string selectedCities = string.Empty;
public void OnGet()
{
}
}
}
City类只包含一个用于演示目的的字符串。我知道这可能是一个非常糟糕的方法来做后面的代码,但它帮助我更好地说明问题。
答案 0 :(得分:1)
你可以使用Javascript / Jquery并添加一个onchange事件监听器,它可以进行Ajax调用并将其值传递给控制器。类似于下面的代码:
<script type="text/javascript">
// assuming you're using jQuery
$("#selectedCity").change( function (event) {
$.ajax({
url: "Controller/PostDropdown/",
data: { id = $(this).val() },
type: "POST",
dataType: "html",
success: function (data, textStatus, XMLHttpRequest) {
// do something
}
});
});
答案 1 :(得分:1)
你应该用表单包装select。提交表单后,它将调用您的控制器。
看到这个: Submitting form and pass data to controller method of type FileStreamResult