【发布时间】:2026-01-03 18:05:03
【问题描述】:
我是 ASP.net 和 Razor Pages 的新手。在下面的代码中,我尝试使用基于州下拉列表的值填充 District 下拉列表。到目前为止,这是我所得到的:
查看:
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script language="javascirpt" type="text/javascript">
function GetDist(_stateId) {
var procemessage = "<option value='0'> Please wait...</option>";
$("#select-state").html(procemessage).show();
var url = "/Info/GetDistById/";
$.ajax({
url: url,
data: { stateid: _stateId },
cache: false,
type: "POST",
success: function (data) {
var markup = "<option value='0'>Quận/Huyện</option>";
for (var x = 0; x < data.length; x++) {
markup += "<option value=" + data[x].Value + ">" + data[x].Text + "</option>";
}
$("#select-state").html(markup).show();
},
error: function (reponse) {
alert("error : " + reponse);
}
});
}
</script>
<div class="col-md-offset-0 col-md-2">
<select class="form-control" id="select-state" onchange = "javascript:GetDist(this.value);">
@foreach (var state in Model.tbState)
{
<option value=@state.StateId>@state.Statename</option>
}
</select>
</div>
<div class="col-md-1 ">Quận/Huyện: </div>
<div class="col-md-offset-0 col-md-2">
<select class="form-control" id="select-dist">
@foreach (var dist in Model.tbDistrict)
{
<option value=@dist.DistrictId>@dist.Districtname</option>
}
</select>
</div>
在我的 cshtml.cs 文件中,我有这段代码。我确实在代码开头使用了System.Web.Helpers:
public IActionResult GetDistById(int stateid)
{
List<TbDistrict> list = new List<TbDistrict>();
foreach (var q in tbDistrict)
{
if (q.StateId == stateid)
list.Add(q);
}
SelectList selectlist = new SelectList(list, "", "", 0);
JsonResult result = Json(selectlist);
return result;
}
我发现 Json() 方法仅适用于 MVC 中的 Controller 类,而不适用于 Razor PageModel 类,因此它会给出错误 CS0103“名称 'Json' 在当前上下文中不存在” .有没有办法让它工作?
【问题讨论】:
-
在 Razor 页面上下文中返回非视图有点奇怪(因为关于 Razor 页面的全部意义在于使其非常以视图为中心)。您可以使用
return new JsonResult(…)新建一个JsonResult。 -
如果您需要返回 JSON,那么您应该使用传统的控制器和操作,而不是 Razor 页面。 Razor 页面旨在返回视图。
标签: javascript asp.net ajax asp.net-core razor