如何从路由';使用asp.net mvc和razor模板引擎在c#中命名?
我试图在razor模板中获取已知路由名称的url 这是我的部分观点如何从路由';使用asp.net mvc和razor模板引擎在c#中命名?,c#,asp.net-mvc,asp.net-mvc-4,razor,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,Asp.net Mvc 5,我试图在razor模板中获取已知路由名称的url 这是我的部分观点 @model ScripterEngine.ViewModels.CampaignViewModel <script type="text/javascript"> function logTime(stage, status, async){ var target = "@UrlHelper.RouteUrl("timetracker.clockin")"; var
@model ScripterEngine.ViewModels.CampaignViewModel
<script type="text/javascript">
function logTime(stage, status, async){
var target = "@UrlHelper.RouteUrl("timetracker.clockin")";
var postData =
{
'campaign_id': @Model.id,
'agent_id': is_system_agentid.value,
'log_id': is_attr_calldata.tracker_id,
'stage_name': stage
};
if( status == 'out'){
target = "@UrlHelper.RouteUrl("timetracker.clockout")";
}
if( async !== false){
async = true;
}
$.ajax({
type: 'POST',
url: target,
data: postData,
async: async,
dataType: "json",
error: function( jqXHR, textStatus, errorThrown ){
alert('clock ' + status + ' failed!' + jqXHR.status );
},
success: function(data){
if(data && data.id && status != 'out'){
is_attr_calldata.tracker_id = data.id;
}
}
});
}
</script>
但是,在启动程序并导航到路由后,我得到一个编译错误
编译错误说明:编译过程中发生错误
编译服务此请求所需的资源。请
查看以下特定错误详细信息并修改源
适当地编码
编译器错误消息:CS0120:编译器需要对象引用
非静态字段、方法或属性
'System.Web.Mvc.UrlHelper.RouteUrl(字符串)'
此行的错误点
var target = "@UrlHelper.RouteUrl("timetracker.clockin")";
如何从给定的路由名称中正确获取Url?视图中显示的
UrlHelper
为@Url
-用于WebViewPage
的代码有:
public UrlHelper Url { get; set; }
尝试:
@是的。这不重要。外部双引号是简单的,内部将在服务器端执行。谢谢。这就成功了。由于这只返回URI而不包含域,我需要在html中添加一个基本标记吗?我个人不需要,这会使跨环境(开发、测试、登台、生产等)的部署变得更加棘手。除非你有一个令人信服的理由?我只是想确保我可以把这个URI放在网站的任何地方,它会把用户带到URL你应该可以。。。我从未在应用程序中使用base,但YMMV.:-)它应该计算出正确的相对url。
public UrlHelper Url { get; set; }
var target = '@Url.RouteUrl("timetracker.clockin")';