从HTML控件中获取选定的值

时间:2018-03-14 21:51:39

标签: c# asp.net-mvc razor

我是网络方面的新手,我目前正在努力使用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类只包含一个用于演示目的的字符串。我知道这可能是一个非常糟糕的方法来做后面的代码,但它帮助我更好地说明问题。

2 个答案:

答案 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