Попытка передать значение раскрывающегося списка параметру на кнопке отправки при выборе с использованием MVC C# - PullRequest
0 голосов
/ 09 мая 2020

У меня есть хранимая процедура, связанная с моделью, и я пытаюсь получить значение параметра на основе раскрывающегося списка при отправке. Я могу получить конечное значение, если введу строку в параметр. Однако я хочу, чтобы окончательное значение было основано на раскрывающемся списке при выборе с помощью кнопки отправки. Как передать выбранное значение из раскрывающегося списка в параметр. Мой параметр - GetWA CC () @oplocation, @Industry, @Date). Я пытаюсь передать список в параметр и преобразовать ToString (), но это не работает. Пожалуйста, помогите.

Большое спасибо.

Вот мой HomeController:

 public ActionResult WACC()
    {
        ViewBag.Message = "Your WACC page.";

        //Set Industry : Later make it DB-Driven
        //List<SelectListItem> lstIndustry = new List<SelectListItem>() {
        //    new SelectListItem {Text = "Financials", Value = "1"},
        //  new SelectListItem {Text = "Real Estate", Value = "2"},
        //};



        // Pre-set values
        var objWACC = new WACC();

        objWACC.ValuationDate = new DateTime(2018, 11, 20);
        //objWACC.IndustryList = lstIndustry;
        objWACC.IndustryList = WACC_Lib.GetIndustry();
        //objWACC.IndustrySelected = 1;
         objWACC.LocationList = WACC_Lib.GetOpLocations();
        //objWACC.LocationSelected = 1;
        DateTime waccdate = objWACC.ValuationDate;
        string indlist = objWACC.IndustryList.ToString();
        string loclist = objWACC.LocationList.ToString();
        objWACC.FairValue = WACC_Lib.GetWACC(loclist, indlist, waccdate);



        // Redirect to WACC page    
        return View(objWACC);
    }

Вот мой WA CC Contoller:

public class WACCController : ApiController
{
    [HttpGet]
    [Route("GetWACC")] // for testing, F5 and change the link to http://localhost:54192/API/WACC/GetWACC?strOpLocation=Hong%20%Kong&strIndustry=Financials&strIniDate=2017-12-31&strValDate=2018-12-31 , the port no may be different (no "HOME")
    public double GetWACC(string strOpLocation, string strIndustry, DateTime ValDate)
    {
        double dblResult = 0.0;

        try
        {
            dblResult = BDODataLib.WACC_Lib.GetWACC(strOpLocation, strIndustry, ValDate);
        }
        catch
        {
            dblResult = -2.0;
        }            

        return dblResult;
    }
}

}

Вот моя модель:

public class WACC
{
    [Key]
    [Display(Name = "Industry")]
    //public string Industry { get; set; }
    public List<SelectListItem> IndustryList { get; set; }
    public string IndustrySelected { get; set; }

   // public int LocID { get; set; }

    [Display(Name = "Location")]
    public List<SelectListItem> LocationList { get; set; }

    public string LocationSelected { get; set; }


    [Display(Name = "Valualtion Date")]
    public DateTime ValuationDate { get; set; }

    [Display(Name = "WACC")]
    public double FairValue { get; set; }
}

Вот мой вид:

        <table class='wacctable'>


            <tr>
                <td style="background-color:lightgrey">@Html.DisplayNameFor(x => x.IndustryList)</td>
                @*<td>@Html.DropDownList("lstIndustry", (IEnumerable<SelectListItem>)ViewData["lstIndustry"],1)</td>*@
                @*<td style="width: 200px">@Html.DropDownListFor(x => x.IndustrySelected, Model.IndustryList, "--Select One--", new {onchange = "document.getElementById('TheForm').submit();" })</td>*@
                <td style="width: 200px">@Html.DropDownListFor(x => x.LocID, new SelectList (Model.IndustryList, "Value", "Text"), "--Select One--")</td>

                @*<td>@Html.DropDownListFor(model => model.Industry, (IEnumerable<SelectListItem>)ViewData["lstIndustry"])</td>*@
                @*<td>@Html.TextBoxFor(model => model.Industry)</td>*@
            </tr>
            <tr>
                <td style="background-color:lightgrey">@Html.DisplayNameFor(x => x.LocationList)</td>
                @*<td>@Html.TextBoxFor(x => x.LocationList)</td>*
                @*<td>@Html.DropDownListFor(x => x.LocationSelected, Model.LocationList, "--Select One--", new { @class = "abc", onchange = "document.getElementById('TheForm').submit();" })</td>*@
                <td>@Html.DropDownListFor(x => x.LocID, new SelectList (Model.LocationList, "Value", "Text"), "--Select One--", new { @class = "abc" })</td>


                @*<td>@Html.DropDownListFor(x => Model.LocationSelected, new SelectList(Model.LocationList, "Value"), htmlAttributes: new { @class = "form-control", id = "Location",style = "length: 180px;" })</td>*@

            </tr>
            <tr>
                <td style="background-color:lightgrey">@Html.DisplayNameFor(x => x.ValuationDate)</td>
                <td>@Html.TextBoxFor(x => x.ValuationDate, string.Format("{0:d}", Model.ValuationDate.ToString("yyyy-MM-dd")), new { @class = "date-picker", type = "date" })</td>
            </tr>
            <tr>
                <td style="background-color:lightgrey">@Html.DisplayNameFor(m => m.FairValue)</td>
                <td>@Html.TextBoxFor(m => m.FairValue, new { @class = "width: 180px;" })</td>
            </tr>

        </table>
        <br />
        <input type="submit" value='Submit' />




    }
</div>

вот как это выглядит, когда я передаю параметр

Параметр возвращает этот "System.Collection.Generi c .List"

Вот как выглядит представление:

Вот как выпадающий список выглядит как

1 Ответ

0 голосов
/ 09 мая 2020

Вы передаете список LocationList в метод api.

objWA CC .FairValue = WACC_Lib.GetWA CC (loclist, indlist, waccdate);

пока вы должны передать selected одно местоположение для метода api, как показано ниже:

objWA CC .FairValue = WACC_Lib.GetWA CC (objWA CC .LocationSelected, indlist, waccdate);

Как я вижу При просмотре кода и модели вы связываете locID с раскрывающимся списком местоположения, в то время как вы должны связать LocationSelected с раскрывающимся списком местоположения, и вы получите выбранное значение в свойстве модели LocationSelected. похоже, вы проводите эксперимент и забыли раскомментировать требуемую строку. необходимо внести некоторые изменения во 2-ю строку представления таблицы, пожалуйста, раскомментируйте строку ниже:

@*<td>@Html.DropDownListFor(x => Model.LocationSelected, new SelectList(Model.LocationList, "Value"), htmlAttributes: new { @class = "form-control", id = "Location",style = "length: 180px;" })</td>*@

Комментарий ниже строки:

 <td>@Html.DropDownListFor(x => x.LocID, new SelectList (Model.LocationList, "Value", "Text"), "--Select One--", new { @class = "abc" })</td>
...