Получить выбранное значение в раскрывающемся списке html на странице бритвы dotnet - PullRequest
0 голосов
/ 14 февраля 2020

С помощью приведенного ниже кода, как я могу получить значение раскрывающегося списка с помощью обработчиков страниц или помощников тегов?

Один из способов, которые я читал, - использовать OnChange в раскрывающемся списке, я могу установить значение скрытое поле с javascript, затем получите значение скрытого поля из кода позади. Должен ли я даже использовать обработчики страниц / помощники тегов, чтобы получить раскрывающееся значение?

Я пытался использовать Request.Form["networks"], но это просто дает идентификатор, а не значение.

<form method="post">
     @Html.DropDownList("networks",
     Model.GetNetworks().Select(s => new SelectListItem()
     {
         Text = s.networks,
         Value = s.id.ToString(),
     }),
     new
     {
        @class = "dropdown form-control",
     })
     <input type="hidden" id="selectedwifivalue" />
     <br />
     <input type="text" placeholder="enter wifi password" asp-for="Password" class="input-sm form-control" />
     <br />           
     <button asp-page-handler="submit" class="btn btn-primary btn-sm form-control">Submit</button>
</form>

Модель is

public class WifiNetworks
{   
    public int id { get; set; }
    public string networks { get; set; }
    public IEnumerable<SelectListItem> UserNetworks { get; set; }
}

Код в файле CS html

[BindProperty]
public string Password { get; set; }
public string networks { get; set; }
public void OnPostSubmit()
{
    {
        var password = Request.Form["password"];
        var network = Request.Form["networks"]; <--this just gives the ID and not the value
        var wifi = networks;  <---this is blank
    }
}

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

В конце концов, я мог бы сделать это, используя ajax, но используя подход скрытого поля, он работает нормально, как показано ниже, не подозревая, является ли это хорошим / плохим / лучшим способом сделать это (я, кажется, задавал эти вопросы довольно alot)

получить значение раскрывающегося списка, используя jquery функцию "change" (оставьте это вне функции

$ (document) .ready, поскольку она не будет срабатывать)

    $('#dnetworks').change(function () {

        var selectedwifi = $('#networks option:selected').text();

        $('#hiddenselectedwifivalue').val(selectedwifi); //set value of hidden field 

});

Страница бритвы

<input type="hidden" id="hiddenselectedwifivalue" asp-for="WifiNetworks.networks" />

.cs html file

  var selectedwififromdd = WifiNetworks.networks;

Я использовал привязку для всего класса на странице модели (файл .cs html)

  public class WifiModel : PageModel
    {
        [BindProperty] public WifiNetworks WifiNetworks { get; set; }
0 голосов
/ 14 февраля 2020

Чтобы получить доступ к значению элементов формы, вы можете использовать Request.Form collection, передав имя элемента формы. Задайте свойство name элемента html и проверьте.

Ниже приведен пример кода для получения формы. значение элемента, используя свойство name.

Вид:

@using (Html.BeginForm("ReceiveValueWithRequestFormData", "ControllerAndAction"))
{
    <ol>
        <li>
            @Html.Label("Username")
            @Html.TextBox("txtUserName") : user
        </li>
        <li>
            @Html.Label("Password")
            @Html.TextBox("txtPassword") : pass
        </li>
    </ol>
    <input type="submit" value="Login" />
}
<div id="divResult"></div>

Контроллер:

        [HttpPost]
        public ActionResult ReceiveValueWithRequestFormData()
        {
            string userName = Request.Form["txtUserName"]; 
            string password = Request.Form["txtPassword"];
            if (userName.Equals("user", StringComparison.CurrentCultureIgnoreCase)
            && password.Equals("pass", StringComparison.CurrentCultureIgnoreCase))
            {
                return Content("Login successful !");
            }
            else
            {
                return Content("Login failed !");
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...