2015-07-28 79 views
1

我想在一个链接中放置一些剃须刀的东西,但不能完全让它注册正确。这是怎么回事错的部分是@{ @Url...在视图中使用剃须刀内的字符串

<a class="social-icons-anchor" HREF="mailto:?subject=Check out this blah! - Blah&[email protected]{ @Url.AbsoluteAction(" Details", "Blah" , new { blahID = Model.Blah.BlahID }); }"> 

什么是将这种链接中的正确方法是什么?

编辑:

结果似乎是这样的(注意间距):

https://blah-blahdev.azurewebsites.net/blah/ details?blahID=121 

这里是方法帮助我使用:

public static class UrlHelperExtension 
{ 
    public static string AbsoluteAction(this UrlHelper url, string actionName, string controllerName, object routeValues = null) 
    { 
     string scheme = url.RequestContext.HttpContext.Request.Url.Scheme; 
     return url.Action(actionName, controllerName, routeValues, scheme); 
    } 
+0

你不需要@ 2次。你只需要使用@ Url.AbsoluteAction(),你就会好起来的 – greenhoorn

+0

它正在做你所问的:你的AbsoluteAction调用参数有一个空格,所以你的输出URL有一个空格 –

+2

@ Jimmyt1988注意你在Url中的空间。 AbsoluteAction(“详细信息”) – greenhoorn

回答

4

你试试使用Razor块内的代码。为了解决这个问题,只是删除@{ ... }

<a class="social-icons-anchor" HREF="mailto:?subject=Check out this blah! - Blah&body= @Url.AbsoluteAction(" Details", "Blah" , new { blahID = Model.Blah.BlahID })"> 
2

基本上你必须删除@ {},但。

创建一个帮手:

@helper MailToThing(string email, string body, string title, string subject) { 
    <a class="social-icons-anchor" href="mailto:@[email protected]&[email protected]">@title</a> 
} 

然后,你将必须得到胡说,胡说的东西:

@{ 
var body = @Url.AbsoluteAction("Details", "Blah" , new { blahID = Model.Blah.BlahID }); 
var email = "[email protected]"; 
} 

然后渲染:

@MailToThing(email, body, "", "Check out this blah! - Blah")