javascript - 如何根据 MVC 中的 DropDownList 选择刷新页面的一部分?

标签 javascript ajax asp.net-mvc-4

我正在研究 ASP.Net MVC。 我有一个ViewPage SaveStallMenu.cshtml ,其中有 2 个下拉列表 (MF 下拉菜单、Stalls 下拉菜单)和 FilerMenu 按钮

当页面第一次加载时,它持有Stall 1的MenuItem。

现在,我的问题是,当我从MF Dropdownlist中选择一个选项时和Stall DropdownList ,然后点击筛选菜单按钮,将 <div id="partialViewDiv"></div> 中的内容应使用与停顿选择相关的菜单项来刷新。

我正在使用 AJAX 来实现此目的。

当我单击 FilterMenu 按钮时

 @using (Ajax.BeginForm("uppendStallData", "Admin", new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, LoadingElementId = "", UpdateTargetId = "partialViewDiv" }))
            {
}

这应该将我的表格提交到 uppendStallData ActionMethod,但我不知道为什么它不起作用。

如果您发现我对问题的解释有缺陷,请原谅。请尝试浏览我的代码并提供您的指导。

我尝试了很多解决方案,您可以看到下面的脚本,但没有得到我想要做的事情。

试验 1: 如果我使用上面 Ajax.BeginForm ,然后uppendStallData未获取已发布的 ViewModel 数据。

[HttpPost]
public PartialViewResult uppendStallData(AdminVM VM)
{ 

    List<StallsModel> data = _provider.GetStallsList();
    VM.StallNameDDl = data.ToDictionary(x => x.StallId, x => x.StallName);

    List<MFDetailsModel> data1 = _provider.GetMFDetailsList();
    VM.MFNameDDl = data1.ToDictionary(x => x.Id, x => x.MFName);

    long MFID1 = Convert.ToInt64(VM.StallMenuModel.MFId);

    long STallId = Convert.ToInt64(VM.StallMenuModel.StallId);

    VM.CompleteMenuByStallIDList = _provider.GetCompleteMenuByStallId_List(STallId);   

    return PartialView("_MenuTabs", VM);

}

试验 2: 如果我调用 a 如下所示,请单击 FilterMenu 按钮, 此脚本将下拉列表选定的值发送到 uppendStallData ,但是在Contoller中成功执行该方法后,无法返回PartialView并追加到<div id="partialViewDiv"> .

使用Trial2,我的脚本和 Controller 方法如下,

<script>
    $('#Filter').click(function () {
        var MF_Id = $('#StallMenuModel_MFId').val();
        var Stall_Id = $('#StallMenuModel_StallId').val();

        $.ajax({
            url: '@Url.Action("uppendStallData", "Admin")',
            data: { MFID: $("#StallMenuModel_MFId").val(), STID: $("#StallMenuModel_StallId").val() },
            type: 'POST',
            success: function (data) {
                $("#partialViewDiv").html(data);
            }
        });
    });
</script>

Controller

         public PartialViewResult uppendStallData(string MFID,string STID)
         {


             List<StallsModel> data = _provider.GetStallsList();
             VM.StallNameDDl = data.ToDictionary(x => x.StallId, x => x.StallName);

             List<MFDetailsModel> data1 = _provider.GetMFDetailsList();
             VM.MFNameDDl = data1.ToDictionary(x => x.Id, x => x.MFName);


             long MFID1 = Convert.ToInt64(MFID);

             long STallId = Convert.ToInt64(STID);

             VM.CompleteMenuByStallIDList = _provider.GetCompleteMenuByStallId_List(STallId);    
             return PartialView("_MenuTabs", VM);
         }

这是 Controller 代码:

[HttpGet]
public ActionResult SaveStallMenu()
{
    AdminVM VM = new AdminVM();
    List<StallsModel> data = _provider.GetStallsList();
    VM.StallNameDDl = data.ToDictionary(x => x.StallId, x => x.StallName);

    List<MFDetailsModel> data1 = _provider.GetMFDetailsList();
    VM.MFNameDDl = data1.ToDictionary(x => x.Id, x => x.MFName);
    VM.StallMenuModel = new StallMenuModel();


    VM.CompleteMenuByStallIDList = _provider.GetCompleteMenuByStallId_List(1);                     
    return View(VM);
}


[HttpPost]
public PartialViewResult uppendStallData(string MFID,string STID)
{

    List<StallsModel> data = _provider.GetStallsList();
    VM.StallNameDDl = data.ToDictionary(x => x.StallId, x => x.StallName);

    List<MFDetailsModel> data1 = _provider.GetMFDetailsList();
    VM.MFNameDDl = data1.ToDictionary(x => x.Id, x => x.MFName);


    long MFID1 = Convert.ToInt64(MFID);

    long STallId = Convert.ToInt64(STID);

    VM.CompleteMenuByStallIDList = _provider.GetCompleteMenuByStallId_List(STallId);    
    return PartialView("_MenuTabs", VM);

}

最佳答案

非常感谢您的立即回复。这是我的问题的答案。

SaveStallMenu.cshtml

<div class="col-lg-4">
         <div class="form-group form-group-select2">
            <label style="font-size:15px;font-weight:bold;">Select MF Name</label>
           @Html.DropDownListFor(model => model.StallMenuModel.MFId, new SelectList(Model.MFNameDDl, "Key", "Value", "--- Select ---"), new { @onchange = "FillService()", @class = "form-control" })
           @Html.ValidationMessageFor(model => model.StallMenuModel.MFId, "", new { @class = "text-danger" })
         </div>
</div>

<div class="col-lg-4">
     <div class="form-group form-group-select2">
         <label style="font-size:15px;font-weight:bold;">Select Stall Name</label>
       @Html.DropDownListFor(model => model.StallMenuModel.StallId, new SelectList(Model.StallNameDDl, "Key", "Value", "--- Select ---"), new { @class = "form-control" })
       @Html.ValidationMessageFor(model => model.StallMenuModel.StallId, "", new { @class = "text-danger" })
    </div>
</div>

<div class="col-lg-4" style="float:right;">
    <div class="form-group form-group-select2">
           <input type="submit" value="Filter Menu" id="Filter" class="btn btn-success" style="margin-top:25px;float:right;" />
     </div>
</div>

    <div id="partialViewDiv"></div>

    <script>
        $('#Filter').click(function () {
            var MF_Id = $('#StallMenuModel_MFId').val();
            var Stall_Id = $('#StallMenuModel_StallId').val();

            $.ajax({
                url: '@Url.Action("uppendStallData1", "Admin")',
                data: { MFID: $("#StallMenuModel_MFId").val(), STID: $("#StallMenuModel_StallId").val() },
                type: 'POST',
                success: function (data) {
                    $("#partialViewDiv").html(data);
                }
            });
        });
    </script>

Controller 代码:

[HttpPost]
public PartialViewResult uppendStallData1(string MFID, string STID)
{
    AdminVM VM= new AdminVM();

    long MFID1 = Convert.ToInt64(MFID);
    long STallId = Convert.ToInt64(STID);

    List<StallsModel> data = _provider.GetStallsList();
    VM.StallNameDDl = data.ToDictionary(x => x.StallId, x => x.StallName);

    List<MFDetailsModel> data1 = _provider.GetMFDetailsList();
    VM.MFNameDDl = data1.ToDictionary(x => x.Id, x => x.MFName);             

    VM.CompleteMenuByStallIDList = _provider.GetCompleteMenuByStallId_List(STallId);
    return PartialView("_MenuTabs", VM);
}

关于javascript - 如何根据 MVC 中的 DropDownList 选择刷新页面的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42054190/

相关文章:

javascript - 使用缓冲区复制 fs.createReadStream

javascript - 对文档加载的 Ajax 调用不起作用

asp.net-mvc - 使用 EntityFramework 将浏览用户的凭据传递到 MVC 4 应用程序中的数据库连接

php - 我怎样才能从 angularJS 到 phalcon php 发出完整的回发请求

javascript - Angular 在网页中没有显示任何内容,清楚地显示数组中的数据

asp.net-mvc - 如何指定显式 ScriptBundle 包含顺序?

c# - ASP.NET MVC4网页异步FTP上传

javascript - PHP : Preventing multiple javascript inclusions

javascript - datepicker - 计算用户的年龄

javascript - Angular $interval 返回 f 不是函数