C# 如何返回带有@Url.Action的字符串

C# 如何返回带有@Url.Action的字符串,c#,html,asp.net-mvc,razor,C#,Html,Asp.net Mvc,Razor,如何返回带有url的模型属性并将其放在onclick上,如下所示: 型号: public class MyModel { public string link {get;set;} } 控制器: public ActionResult Index() { MyModel oMyModel = new MyModel(); oMyModel.Link = "@Url.Action('" + "Index" + "', '" + "Users" + "')";

如何返回带有url的模型属性并将其放在onclick上,如下所示:

型号:

public class MyModel
{
     public string link {get;set;}
}
控制器:

public ActionResult Index()
{
    MyModel oMyModel = new MyModel();
    oMyModel.Link = "@Url.Action('" + "Index" + "', '" + "Users" + "')";

    return View(oMyModel);
}
鉴于:

 <a class="font" href="#" onclick="@Model.LINK">Click Here</a>


但是在html中它不能正确地呈现

首先,决定一个案例。您正在模型中使用
link
,在控制器中使用
link
,在视图中使用
link
。在C#中,这些都意味着不同的事情。选择一个,让它们都一样

其次,
@
表示法是一种语法。将其添加到字符串中,然后使用razor将该字符串注入到视图中。但到那时,Razor将不再处理它,所以它将保持为
@Url.Action…

您应该在控制器中执行此操作,以便它将变量设置为实际URL(不仅仅是
“@URL.Action…”
):

或者,最好只需在视图中调用
Url.Action
,即可得到完全相同的结果:

<a class="font" href="@Url.Action("Index", "Users")">Click Here</a>


model.Link=Url.Action(“actionName”、“controllerName”);这是在控制器中生成url的方法。对于您的案例,Link=Url.Action(“索引”、“用户”);此外,它将是
@Model.Link
(区分大小写),尽管该链接属性有三种不同的情况!另外,使用锚定标记的
href
属性!它呈现不正确:html结果是它应该在那里-同样,你需要删除引号,并确保你使用的是System.Web.Mvc;但我想在控制器中定义url并在视图中使用。在控制器中,无法识别URL。请确保使用了正确的大小写。它是
Url
,而不是
Url
<代码>Url。在控制器中识别操作。我刚试过。
Url
Controller
的一个属性,所以请确保您的控制器类继承自
Controller
(尽管我不知道如果不是,您的应用程序如何工作),它只呈现onclick=“/Users”,而不是onclick=“/Users/Index”。错误:无效的正则表达式:缺少/索引操作始终是默认操作,因此“/Users”将在
用户
控制器中使用索引操作。
<a class="font" href="@Url.Action("Index", "Users")">Click Here</a>