我有以下ASP.NET MVC .cshtml文件,其中我执行以下操作:
抓住名字&来自MyObject
的Id值并在其中创建DropDownList
,当用户选择下拉框中的项目时,我尝试使用AJAX来调用TheMethodToCall
TheController
这是{{1}中的方法1}},并尝试显示TheMethodTocall
返回的文本结果。
@model List<MyWebApp.Models.MyObject>
@if (Model.Count > 0)
{
using (Html.BeginForm())
{
<div class="input-group mb-3">
@Html.DropDownList("SelectFromDropdownList", Model.Select(i => new SelectListItem()
{
Text = i.Name,
Value = i.Id
}), "This is the default DropDownList option", new { @class="custom-select", @id="mydropdownid"})
<script>
$(function(){
$('#SelectFromDropdownList').change(function () {
var typeFeed = $(this).val();
// Perform AJAX call
$.get("@Url.Action("TheMethodToCall", "TheController")", { TypeFeed: typeFeed }, function (result){
@Html.DisplayText(result);
});
});
});
</script>
</div>
}
}
我有几个问题,请帮忙!他们在这里:
TheMethodToCall
方法中,但当用户从DropDownList
中选择一个项目时,它不会被点击。result
返回的TheMethodToCall
文字的正确方法吗?更新
到目前为止,我很欣赏这些答案,但是我在这个方法中设置了一个断点,但它仍然没有被调用。我确实将$('#SelectFromDropdownList').change(function ()
更改为$('#mydropdownid').change(function ()
。还有什么可做的吗?
[WebMethod()]
public static string TheMethodToCall()
{
return "This is a test";
}
答案 0 :(得分:1)
您的.change侦听器使用了错误的ID。下拉列表的ID为mydropdownid
,但在您的jQuery中,您有$('#SelectFromDropdownList').change
。将其更改为$('#mydropdownid').change
您在AJAX响应中使用结果的方式不正确。您正在尝试使用服务器端Razor / C#(在页面最初加载时执行)来处理页面加载后很久发生的响应。您只需在响应函数中使用JavaScript。