我想给控制器打一个电话。 通常可以这样做:
var url = '@Url.Action("DeleteSelectedPermissions", "Mycontroller")'
var postResult = $.post(url, { userId: GetUserId(), selectedRowsIDs: selectedIDs });
但我需要从javascript设置控制器名称。
我试过这个
var controller = applicationsPageControl.GetActiveTab().name;
var url = '@Url.Action("DeleteSelectedPermissions", @:controller)'
var postResult = $.post(url, { userId: GetUserId(), selectedRowsIDs: selectedIDs });
和此:
var controller = applicationsPageControl.GetActiveTab().name;
var url = '@Url.Action("DeleteSelectedPermissions", @:controller @)'
var postResult = $.post(url, { userId: GetUserId(), selectedRowsIDs: selectedIDs });
但我得到语法错误:Razor期望右括号
答案 0 :(得分:3)
你有点打败我!
var controller = applicationsPageControl.GetActiveTab().name;
var url = '@Url.Action("DeleteSelectedPermissions", "PCN")';
url = url.replace("PCN", controller);
var postResult = $.post(url, { userId: GetUserId(), selectedRowsIDs: selectedIDs }
是的,您使用占位符。 如果您对前进有用,如果您有ActionLink并且想要动态更改参数,也可以使用占位符。
@Html.ActionLink("linkText", "action", "controller", routeValues: new { myParam = "__plc__" }, htmlAttributes: new { id="myLink" })
并在javascript中...(这里,JQuery用于将浏览器的文化作为参数发送。这当然只在运行时才知道,Razor输出的链接赢了&#39 ; t知道要放什么价值。
<script>
$(function () {
$('#myLink').prop('href', $('#myLink').prop('href').replace('__plc__', navigator.language ? navigator.language : navigator['userLanguage']));
答案 1 :(得分:0)
我不知道这是不是最好的方式,但它有效:
var controller = applicationsPageControl.GetActiveTab().name;
var url = '@Url.Action("DeleteSelectedPermissions", "PCN")';
url = url.replace("PCN", controller);
var postResult = $.post(url, { userId: GetUserId(), selectedRowsIDs: selectedIDs });