Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax partialview中selectedlist的Id未传递给控制器_Ajax_Asp.net Mvc_Partial Views - Fatal编程技术网

Ajax partialview中selectedlist的Id未传递给控制器

Ajax partialview中selectedlist的Id未传递给控制器,ajax,asp.net-mvc,partial-views,Ajax,Asp.net Mvc,Partial Views,我有一个带有三个下拉列表的局部视图,它显示在我的网页的一些视图中 我需要将最后一个下拉列表的选定id发送到控制器: 这是局部视图中的最后一个下拉列表: <div class="col-sm-10"> @Html.DropDownList("engines", new SelectList(string.Empty, "Value", "Text"), "--Select engine--", new { @class = "dropdown-toggle form-cont

我有一个带有三个下拉列表的局部视图,它显示在我的网页的一些视图中

我需要将最后一个下拉列表的选定id发送到控制器: 这是局部视图中的最后一个下拉列表:

 <div class="col-sm-10">
   @Html.DropDownList("engines", new SelectList(string.Empty, "Value", "Text"), "--Select engine--", new { @class = "dropdown-toggle form-control" })
 </div>
我尝试过这种方法,但没有调用控制器的方法:

var UrlSettings = {
    ModelsUrl: '@Url.Action("GetModels", "Home")',
    EngineUrl: '@Url.Action("GetEngines", "Home")',
    EngineChange: '@Url.Action("ChangeEngine", "Home")'
}

  $(document).ready(function () {
    $("#engines").change(function () {
        document.getElementById("btnSearch").disabled = false;
        document.getElementById("result").hidden = false;

        $.ajax({
            type: 'POST',
            url: UrlSettings.EngineChange,
            dataType: 'json',
            data: { id: $("#engines").val() },
            success: function (engines) {                    
            },
            error: function (ex) {                   
            }
        });
    })`enter code here`
});
这是控制器中的方法,我需要将id作为参数传递

public JsonResult ChangeEngine(int? id)
    {
        return Json(null);
    }
这是我的完整部分视图Html代码:

<div class="car-filter-wrapper">
@*@using (Ajax.BeginForm("SearchForCars", "Home", null))//, new AjaxOptions { UpdateTargetId = "DivCategoriesTree", OnSuccess = "success", HttpMethod = "Post" }, new { make = "makes" }))
    {*@
@using (Html.BeginForm("SearchForCars", "Home", FormMethod.Post))
{
    <div class="col-sm-4" style="height: 10em;display: flex;align-items: center ; padding-top:25px;">
        <i class="fa fa-car" style="font-size:60px;color:red; padding-left:20px;"></i>
        <strong style="padding-left:20px;"></strong>
    </div>

    <div class="col-sm-4">
        <div style="padding-top:15px;">
            <form class="form-control-static">
                <div class="form-group">
                    <div class="row">
                        <div class="col-sm-10">
                            @if (ViewData.ContainsKey("makes"))
                        {
                        @Html.DropDownList("makes", ViewData["makes"] as List<SelectListItem>, "--Select--", new { @class = "dropdown-toggle form-control" })
                            }
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-sm-10">
                            <p></p>
                            @Html.DropDownList("models", new SelectList(string.Empty, "Value", "Text"), "--Select--", new { @class = "dropdown-toggle form-control" })
                        </div>
                    </div>
                    <div class="row">
                        <p></p>
                        <div class="col-sm-10">
                            @Html.DropDownList("engines", new SelectList(string.Empty, "Value", "Text"), "--Select--", new { @class = "dropdown-toggle form-control" })
                        </div>
                    </div>
                </div>

            </form>

        </div>
    </div>

    <div class="col-sm-4" style="height: 10em;display: flex;align-items: center ; padding-top:25px;">
        <input type="submit" id="btnSearch" onclick="location.href='@Url.Action("SearchForCars", "Home")'" class="btn btn-default active" value="Search" disabled="disabled" style="width:150px;" />
    </div>
}

@*@使用(Ajax.BeginForm(“SearchForCars”,“Home”,null))/,新的AjaxOptions{UpdateTargetId=“DivCategoriesTree”,OnSuccess=“success”,HttpMethod=“Post”},新的{make=“makes”})
{*@
@使用(Html.BeginForm(“SearchForCars”,“Home”,FormMethod.Post))
{

@if(ViewData.ContainsKey(“makes”))
{
@DropDownList(“makes”,ViewData[“makes”]作为列表,“--Select--”,new{@class=“dropdown toggle form control”})
}

@DropDownList(“models”,new SelectList(string.Empty,“Value”,“Text”),“--Select--”,new{@class=“dropdown toggle form control”})

@DropDownList(“引擎”,新选择列表(string.Empty,“Value”,“Text”),“--Select--”,新{@class=“dropdown toggle form control”}) }

您能帮我解决这个问题吗?

我已经实现了与您相同的解决方案,如下所示,对我来说效果很好

下面的下拉列表包含一些类
AudioClass
的硬编码项

@Html.DropDownList("engines", new SelectList(new List<AudioClass> {new AudioClass {Id=1, Name = "Audio1"}, new AudioClass { Id = 2, Name = "Audio2" } }, "Id", "Name"), "--Select engine--", new { @class = "dropdown-toggle form-control" })
您将看到的错误是
uncaughttypeerror:无法在开发人员工具的控制台中将属性“disabled”设置为null


我希望这能帮助您识别代码中可能存在的问题并解决问题。

我已经实现了与您相同的解决方案,如下所示,它对我来说效果很好

下面的下拉列表包含一些类
AudioClass
的硬编码项

@Html.DropDownList("engines", new SelectList(new List<AudioClass> {new AudioClass {Id=1, Name = "Audio1"}, new AudioClass { Id = 2, Name = "Audio2" } }, "Id", "Name"), "--Select engine--", new { @class = "dropdown-toggle form-control" })
您将看到的错误是
uncaughttypeerror:无法在开发人员工具的控制台中将属性“disabled”设置为null


我希望这能帮助您识别代码中可能存在的问题并解决问题。

在部分视图代码HTMLIs中输入它进行AJAX调用但返回404?还是根本没有进行AJAX调用?您是否注意到开发人员工具控制台中有任何错误?@Prashanth Benny-我已经用html更新了这个问题code@Chetan Ranpariya-它根本没有进行Ajax调用。实际上,当我使用onclick=“location.href=”@Url.Action(“SearchForCars”,“Home”)”(也可以使用此方法)时,我没有注意到任何错误。我在“/”应用程序中得到:服务器错误。找不到资源。虽然我应该在Home控制器[HttpPost]中有此方法吗公共行动结果搜索汽车(int品牌、int型号、int引擎){…}在部分视图代码HTMLIs中输入它进行AJAX调用但返回404?或者它根本没有进行AJAX调用?您注意到开发工具控制台中有任何错误吗?@Prashanth Benny-我已经用html更新了这个问题code@ChetanRanpariya-它根本没有进行Ajax调用。实际上,当我使用onclick=“location.href=”@Url.Action(“SearchForCars”,“Home”)”(也可以使用此方法),我在“/”应用程序中得到:服务器错误。找不到资源。虽然我应该在主控制器[HttpPost]公共操作结果SearchForCars(int makes,int models,int引擎){……}非常感谢!它现在可以工作了!我花了几个小时来解决这个问题,但我没有意识到实际上我已经没有文档了。getElementById(“结果”)在我的部分视图中。非常感谢!它现在可以工作了!我花了几个小时来解决这个问题,但我没有意识到我已经没有文档了。getElementById(“结果”)依我的观点。
<script>
var UrlSettings = {
    EngineChange: '@Url.Action("Process", "Home")',
}
$(document)
    .ready(function() {
        $("#engines")
            .change(function() {
                $.ajax({
                    type: 'POST',
                    url: UrlSettings.EngineChange,
                    dataType: 'json',
                    data: { id: $("#engines").val() },
                    success: function (engines) {                         
                        alert("success");
                    },
                    error: function (ex) {
                        alert(ex);
                    }
                });
            });
    });
</script>
if (document.getElementById("btnSearch") != null) {
    document.getElementById("btnSearch").disabled = false;
}

if (document.getElementById("result") != null) {
    document.getElementById("result").hidden = false;
}