ASP.Net MVC Razor - Javascript 函数路由问题
ASP.Net MVC Razor - Javascript function routing issue
我在级联下拉列表(ASP.Net MVC Razor)时遇到了一些问题,我知道有很多关于这个主题的问题,但我的问题完全不同,经过数小时的搜索,我找不到答案。
我有我的PessoaController(PersonController),它位于一个名为requrente的区域内。
我有两个下拉列表,一个用于省份(Província),另一个用于郊区(Município)。
Belown是我的观点代码:
<div class="editor-label">
@Html.LabelFor(model => model.ProvinciaId, "Província")
</div>
<div class="editor-field">
@Html.DropDownListFor(Model => Model.ProvinciaId, new SelectList(ViewBag.ProvinciaId as System.Collections.IEnumerable, "id", "Valor"),
"Seleccione", new { id = "ddlProvincia" })
@Html.ValidationMessageFor(model => model.ProvinciaId)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.MunicipioId, "Município")
</div>
<div class="editor-field">
@Html.DropDownListFor(Model => Model.MunicipioId, new SelectList(ViewBag.MunicipioId as System.Collections.IEnumerable, "Id", "Valor"),
"Seleccione", new { id = "ddlMunicipio" })
@Html.ValidationMessageFor(model => model.MunicipioId)
</div>
这是在我的控制器上调用函数的 JavaScript 代码
<script type="text/javascript">
$(document).ready(function () {
$("#ddlProvincia").change(function () {
var selectedProvinceId = $(this).val();
$.getJSON("../pessoa/LoadMunicipiosByProvinceId", { provinciaId: selectedProvinceId },
function (municipioData) {
var select = $("#ddlMunicipio");
select.empty();
select.append($('<option/>', {
value: 0,
text: "Escolha o Municipio"
}));
$.each(municipioData, function (index, itemData) {
select.append($('<option/>', {
value: itemData.Value,
text: itemData.Text
}));
});
});
});
});
</script>.
这段代码完美运行(在创建视图上),当我想添加一个新人时,我选择省份,它会根据所选省份加载郊区,到目前为止一切顺利。
为了避免通过将代码复制到编辑视图来复制 javascript 函数,我决定将我的 javascript 函数移动到分部视图,并将其包含在创建和编辑视图中。
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
@Html.Partial("LoadMunicipiosScript");
}
代码仍然在创建视图上完美运行,但在编辑视图上,每当我选择不同的省份时,我都会收到 404 错误,因为找不到该函数。
从firebug中我可以看到问题是什么,我的创建视图使用正确的路径来调用控制器中的函数。localhost:57934/requerente/pessoa/LoadMunicipiosByProvinceId?provinciaId=200003
在我的编辑视图中,我的控制器的名称如何以某种方式添加到路径中两次,从而产生 404。localhost:57934/requerente/pessoa/pessoa/LoadMunicipiosByProvinceId?provinciaId=200003
我知道复制代码和调整 url 会让我启动并运行,但有没有人知道为什么不一致的行为,计数两个视图(创建和编辑)都在同一个文件夹上并且正在执行相同的共享功能。
问题看起来您在从两个不同的页面加载../pessoa/LoadMunicipiosByProvinceId
具有相同的相对 URL,最终引用每个页面中的不同位置。例如,如果两个 URL 是(请注意不同的基本文件夹),则会发生这种情况:
- 本地主机:57394/requrente/foo
- 本地主机:57394/雷克伦特/佩索/酒吧
相反,您可以使用Url.Action
动态生成目标 URL。我不知道您的路由方案,但例如:
$.getJSON("@Url.Action("LoadMunicipiosByProvinceId", "pessoa")",
{ provinciaId: selectedProvinceId },
function(data) {/*...*/});
- Angularjs:路由后如何调用控制器函数
- 通过express路由调用HTML中的Javascript函数
- angular-index.html只识别默认路由中定义的函数
- 无法使用快递和猫鼬进行路由,请继续获取"类型错误:req.params.user不是函数;
- 如何在路由更改后停止 setInterval 函数在角度指令上执行
- ES6类,传递函数作为参数来注册expressjs路由
- Express JS - 对路由和中间件使用匿名函数
- 节点.js解析路由的最小函数
- ExpressJS中同一路由函数的多个路径
- 在 Express JS 中从路由调用函数对象
- 使用语义 UI 选项卡启用的多个路由的文档就绪函数应该去哪里
- 参数 '
' 不是 Angular 路由中的函数 - NodeJs,异步函数在 api 路由返回后完成
- ASP.Net MVC Razor - Javascript 函数路由问题
- 如何在快递.js中让多条路线使用相同的路由函数
- 调用路由中的父控制器函数
- Ember&RSVP:如何解决路由中的嵌套关系's模型函数
- $routeProvider配置路由抛出'未捕获错误:[ng:areq]参数'fn'不是函数,得
- AngularJS函数在路由更改时被错误调用
- 使用expressjs和对象构造函数路由错误