Member 11339247 Ответов: 2

Как сделать имя из списка в MVC


Я хочу получить значение name, а не ID value из SelectList в mvc.

Вот мой код

Контроллер

var occupationList = new SelectList(new[] 
{
    new { ID = 1, Name = "Student" },
    new { ID = 2, Name = "House Wife" },
    new { ID = 3, Name = "Business Man" },
    new { ID = 4, Name = "Service Man" },
},
"ID", "Name", 1);
ViewData["occupationList"] = occupationList;
return View();


Смотреть

@Html.DropDownList("Occupation", ViewData["occupationList"] as SelectList, new {@class="control-label", style="width:250px;" })


Теперь, когда я выбираю элемент из выпадающего списка в то время, он показывает выбранный элемент, но сохраняет значение идентификатора в базе данных.

Например : я выбираю Значение Имени студента из выпадающего списка и сохраняю его. Теперь в базе данных он хранит значение 1.

Но я не хочу хранить значение идентификатора, то есть 1. я хочу сохранить значение имени, то есть студента, в базе данных.

Спасибо.

Что я уже пробовал:

Я много чего пробовал, но ничего не получалось.

2 Ответов

Рейтинг:
2

Karthik_Mahalingam

Цитата:
Но я не хочу хранить значение идентификатора, то есть 1. я хочу сохранить значение имени, то есть студента, в базе данных.

если вы не хотите, чтобы ID затем присвоите значение Text к ID

var occupationList = new SelectList(new[] 
{
    new { ID =  "Student", Name = "Student" },
    new { ID = "House Wife", Name = "House Wife" },
    new { ID = "Business Man", Name = "Business Man" },
    new { ID = "Service Man", Name = "Service Man" },
},


Рейтинг:
1

F-ES Sitecore

Имя не отправляется вместе с почтой, поэтому вы не можете прочитать его с помощью традиционных методов. Если ваши данные жестко закодированы, то вы уже знаете, к чему приравнивается идентификатор.

private List<MyData> GetData()
{
    return new List<MyData> {
        new MyData{ ID=1, Name="Student" },
        new MyData{ ID=2, Name="House Wife" },
        new MyData{ ID=3, Name="Business Man" },
        new MyData{ ID=4, Name="Service Man" },
    };
}

[HttpGet]
public ActionResult Index()
{
    var occupationList = new SelectList(GetData(),
    "ID", "Name", 1);

    ....

    // when the form is posted get the ID then get the name from the data
    int postedID = 1;
    string name = GetData().FirstOrDefault(d => d.ID == postedID).Name;

    ....


Правка: днем вы *действительно* хотите сохранить идентификатор, а не текст, поверьте нам на это, так как он вернется и укусит вас, если вы не будете поддерживать целостность данных таким образом.