使用AJAX或其他方式将选定的下拉列表发送到控制器MVC

时间:2015-03-29 11:18:48

标签: ajax asp.net-mvc

我需要将所选项目的ID从下拉列表发布到相同控制器的post方法并在同一视图中呈现内容 我很快帮助我:(

我的观点

    @Html.DropDownListFor(x => x.hotelmodel.SelectedHotelId, Model.hotelmodel.DrpHotelList)
<div>
<p>@Model.percentageoccupied</p>
 <p>@Model.Revenue</p>
 <p>@Model.UnSold</p>
<div>

MY HttpGetMethod

 [HttpGet]
    public ActionResult Counter()
    {
        var personid = ((PersonModel)Session["PersonSession"]).PersonId;
        var model = new CounterforModel();

        model.hotelmodel.DrpHotelList = iCommonservice.GetHotelListByPersonId(personid);

        return View(model);
    }

我的HttpPostMethod

     [HttpPost]

        public ActionResult Counter(int id)
        {
            var result = iCommonservice.LoadCounter(id);
            model.percentageoccupied = Convert.ToInt32(result[0].percentageoccupied);
            model.Revenue = Convert.ToDecimal(result[0].Revenue);
            model.UnSold = Convert.ToInt32(result[0].UnSold);
            return View(model);
        }

1 个答案:

答案 0 :(得分:0)

在POST方法中,将View Model作为参数传递。然后,您可以使用已发布的hotelModel.SelectedHotelId来获取所需内容,更新模型值并将更新的模型传递给视图。

    public ActionResult Counter(CounterforModel model)
    {
        var result = iCommonservice.LoadCounter(model.hotelmodel.SelectedHotelId);
        model.percentageoccupied = Convert.ToInt32(result[0].percentageoccupied);
        model.Revenue = Convert.ToDecimal(result[0].Revenue);
        model.UnSold = Convert.ToInt32(result[0].UnSold);

        return View(model);
    }

如果需要,您可以使用@Ajax.BeginForm()jQuery .ajax()对您的操作进行ajax调用。你可以查看here