Как получить значение раскрывающегося списка HTML из представления в контроллер в MVC?

Требуется небольшая помощь

1) Я создал раскрывающийся список html в представлении MVC, подобный этому

<select name="Associateddl" id="Associateddl"></select> 

2) Я добавляю параметры в раскрывающийся список, используя JQuery Ajax, например

$.ajax({
type: 'POST',
contentType: "application/json; charset=utf-8",
url: 'customservice.asmx/getallmember',
dataType: 'JSON',
success: function (response) {
var getData = JSON.parse(response.d);
console.log(getData.length);
if (getData.length > 0) {
$("#msg").hide();
$.each(getData, function (i, item) {
var optiontext = "";
optiontext = "<option value='" + item.Aid + "'>" + item.AMail + "</option>";
$("#Associateddl").append(optiontext);
});
}
else {
$("#msg").append("<p style='color:red'><b>Currently there are no members ,Please Add !!</b></p>");
}
},
error: function (err) {
//alert(err);
}
});

3) Теперь я хочу получить выбранное значение в раскрывающемся списке для контроллера из представления.

Моя модель:

public class Event
{
[DisplayName("Event Name")]
[Required(ErrorMessage ="Event Name is Mandatory...")]
public string Eventname { get; set; }
[DisplayName("Event Year")]
[Required(ErrorMessage ="Enter the Year...")]
public int Year { get; set; }
[DisplayName("Associate ID")]
[Required(ErrorMessage ="Associate ID is required...")]
public string Associateddl { get; set; }
}

Мой контроллер:

[HttpPost]
public ActionResult Index(Event eve)
{

string ename = eve.Eventname;
int eyr = eve.Year;
string eassociate = eve.Associateddl; //Here i want to retrive the dropdownselected Value

return View();
}

Пожалуйста, помогите мне получить выбранное значение раскрывающегося списка Html для контроллера из представления.


person Satish Marni    schedule 11.09.2018    source источник
comment
В каком случае вы хотите получить значение? Когда форма отправлена? Находится ли элемент SELECT внутри формы?   -  person Shyju    schedule 11.09.2018
comment
@Shyju, когда форма отправлена, я хочу, чтобы это значение было в контроллере.   -  person Satish Marni    schedule 11.09.2018
comment
Затем свойство Associateddl будет заполнено выбранным значением параметра. Что происходит сейчас ?   -  person Shyju    schedule 11.09.2018
comment
Строка eassociate = eve.Associateddl; тогда я получаю eassociate как «undefined», я не получаю значение   -  person Satish Marni    schedule 11.09.2018
comment
Это означает, что значение вашего опциона имеет это значение. Можете ли вы добавить console.log(getData) и поделиться им? у каждого элемента есть свойство Aid?   -  person Shyju    schedule 11.09.2018
comment
getData имеет значения, в раскрывающемся списке представления MVC я получаю параметры для выбора, но я не могу получить выбранный параметр в контроллере. В любом случае я поделюсь значением переменной getData.   -  person Satish Marni    schedule 11.09.2018
comment
Найдите значение getData 0: {AId: 1, AName: Marni, AMail: [email protected], ADob: 2004-06-20T00: 00: 00, Active: N} 1: {AId: 2, AName: marni , AMail: [email protected], ADob: 1995-07-29T00: 00: 00, Active: Y} 2: {AId: 3, AName: marni, AMail: [email protected], ADob: 1995-07- 29T00: 00: 00, активный: Y} 3: {AId: 4, AName: sairam, AMail: [email protected], ADob: 1994-12-11T00: 00: 00, Active: N}   -  person Satish Marni    schedule 12.09.2018
comment
JavaScript чувствителен к регистру. Заменить item.Aid на item.AId   -  person Shyju    schedule 12.09.2018
comment
Только что протестировал, и он отлично сработал :-), Большое спасибо за вашу внимательную наблюдательность и интерес к решению проблемы. Очень ценю вашу работу :-)   -  person Satish Marni    schedule 12.09.2018
comment
Возможный дубликат Получение значений из раскрывающегося списка asp.net mvc   -  person Ravikumar    schedule 19.09.2018


Ответы (1)


Вот пример того, как вы можете увидеть значение ddl в контроллере. Я дам вам скрипт ASP.NET, на который вы можете щелкнуть, и на нем будет размещено решение.

веб-сервис

[System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
    [WebMethod]
    public string getallmember()
    {
        var drop2 = new List<SelectListItem>();
        SelectListItem sli1 = new SelectListItem { Text = "MoreOptions1", Value = "1" };
        SelectListItem sli2 = new SelectListItem { Text = "MoreOptions2", Value = "2" };
        drop2.Add(sli1);
        drop2.Add(sli2);
        //GET NewtonSoft
        var json = JsonConvert.SerializeObject(drop2);
        return json;
    }

Контроллер

public class HomeController : Controller
{
    [HttpPost]
    public ActionResult Tut118(string Associateddl)
    {
        //put breakpoint here
        return View();
    }

    public ActionResult Tut118()
    {
        return View();
    }

Вид

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Tut118</title>
    <script src="~/Scripts/jquery-1.12.4.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#theButton").click(function () {
               $.ajax({
                    type: "Post",
                    url: "customservice.asmx/getallmember",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (response) {
                        $("#Associateddl").empty();
                        var theData = JSON.parse(response.d);
                        $.each(theData, function (i, anObj) {
                            $("#Associateddl").append($('<option>').text(anObj.Text).attr('value', anObj.Value));
                        });
                    }
                    ,
                    error: function (request, status, error) {
                        alert(error);
                    }
                });
            })
        })
    </script>
</head>
<body>
    <div>
        @using (Html.BeginForm())
        {
            <input type="button" id="theButton" value="click to get ddl" />
            <select name="Associateddl" id="Associateddl"></select>
            <input type="submit" value="click after selecting ddl" />
        }

    </div>
</body>
</html>
person kblau    schedule 11.09.2018
comment
Вот скрипт ASP.NET MVC (он использует веб-метод JQuery вместо веб-службы, но в моем сообщении показана веб-служба): dotnetfiddle.net/9ggy9O - person kblau; 12.09.2018