Установка по умолчанию в DropDownListFor при отображении из модели - PullRequest
0 голосов
/ 03 июля 2019

Как сделать пустое значение по умолчанию, которое будет отображаться как "" в этом @ Html.DropDownListFor.

Я перепробовал, и они не работают для этого.

HTML:

<td>@Html.DropDownListFor(o => o.TerminalsDDL, Model.TerminalsDDL, new { id = "ddlTerminalID", @class = "form-control align-middle" })</td>

Контроллер:

    public ActionResult Index()
    {
        var model = TCBL.GetTerminalData();
        return View(model);
    }

    //POST: TerminalCommand/Index
    /*This function will insert a user selecter terminal command into the TerminalCommand table*/
    public ActionResult AddTerminalCommand(AddTerminalCommandVM input)
    {

        TerminalCommand terminalCommand = new TerminalCommand();
        terminalCommand.TerminalID = input.TerminalID;
        terminalCommand.Command = input.CommandID;
        terminalCommand.CommandValue = input.CommandValue;

        TCBL.AddTerminalCommand(terminalCommand);

        var redirectUrl = new UrlHelper(Request.RequestContext).Action("Index", "TerminalCommand");
        return Json(new { Url = redirectUrl });
    }

Уровень данных:

 /*Gets All termianls for the terminalsDDL and all terminal Cmds for Model.TerminalCommands*/
    public TerminalCommandVM GetTerminalData()
    {
        TerminalCommandVM terminals = new TerminalCommandVM();

        //For Terminal drop downs
        terminals.TerminalsDDL = TCDA.GetTerminalsDropDown();

        //For terminal cmd lists 
        terminals.TerminalCommands = TCDA.GetAll();

        //For helpdescription
        terminals.HelpDescriptions = TCDA.GetAllHelpDescriptionValues();
        terminals.HelpDescriptionID = TCDA.GetAllHelpDescriptionIDs();

        //For TerminalCommandLookupsDDL
        List<SelectListItem> terminalCommandLookups = new List<SelectListItem>();

        var terminalCommandLookupsResults = TCDA.GetAllTerminalCommandLookups().OrderBy(o => o.Name); //.Where(x => x.Name.Contains("S3"));

        if (terminalCommandLookupsResults != null)
        {
            foreach (var item in terminalCommandLookupsResults)
            {
                SelectListItem newItem = new SelectListItem();
                newItem.Text = item.Name;
                newItem.Value = item.ID.ToString();
                terminalCommandLookups.Add(newItem);
            }
        }

        var terminalCommandValues = TCDA.GetAllTerminalCommandValues();
        terminals.TerminalCommandValues = terminalCommandValues;

        terminals.TerminalCommandLookupsDDL = terminalCommandLookups;

        return terminals;
    }

Внизу - слой доступа к данным, где ЦС получает данные для отображения. Я считаю, что HTML должен иметь какой-то выбор по умолчанию, хотя ..

Ответы [ 2 ]

1 голос
/ 04 июля 2019

Вы можете добавить пустое значение по умолчанию перед циклом for в вашем уровне данных

SelectListItem newItem = new SelectListItem();
newItem.Text = "";
newItem.Value = "";
terminalCommandLookups.Add(newItem);
0 голосов
/ 04 июля 2019

Вы можете использовать эту перегрузку Dropdownlistfor -

Html.DropDownListFor(Expression<Func<dynamic,TProperty>> expression, IEnumerable<SelectLestItem> selectList, string optionLabel, object htmlAttributes)

как это

<td>@Html.DropDownListFor(o => o.TerminalsDDL, Model.TerminalsDDL,"", new { id = "ddlTerminalID", @class = "form-control align-middle" })</td>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...