标签: html.actionlink

可以为ASP.NET的Html.ActionLink()方法编写扩展方法吗?

现在,我正在尝试解决一个IE6/7错误,该错误要求</a>使用此特定于IE的注释包含结束标记,以使某些下拉菜单工作:

<!--[if IE 7]><!--></a><!--<![endif]-->
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法将此直接注入到我的View页面代码中,如下所示:

<%= Html.ActionLink("LinkName<!--[if IE 7]><!--></a><!--<![endif]-->","Action","Controller") %>
Run Code Online (Sandbox Code Playgroud)

由于Html.ActionLink将做安全的事情并过滤掉注释以防止Javascript注入攻击.好的.我很好.好的设计决定.

我想要做的就是为此编写一个扩展方法,但是这个过程正在躲避我,因为我之前没有这样做过.

我认为这样可行,但是Intellisense似乎没有采用我编写的这种扩展方法.

public static class MyLinkExtensions
{
    public static string ActionLinkIE(this HtmlHelper htmlHelper,  
        string linkText, string actionName, string controllerName)
    {
        return LinkExtensions.ActionLink(htmlHelper, linkText, actionName, controllerName).
            Replace(@"</a>", @"<!--[if IE 7]><!--></a><!--<![endif]-->");
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

编辑:班级名称是否重要?(就我而言,我称之为MyLinkExtensions)

此外,鼠标悬停在<%= Html.ActionLink() %>那里似乎已经是一个扩展方法.我可以扩展扩展方法吗?

asp.net-mvc extension-methods actionlink html.actionlink

3
推荐指数
1
解决办法
1702
查看次数

将dropdownlist选择的值调用为@html.action路由值

如何将dropdownlist选择的值称为@html.action路由值.我在我的MVC3剃须刀中使用以下代码.我必须动态调用'eventid'作为dropdownlist选择值.

@Html.Action("FirmPassForum", "Conference", new { eventId = 69 })
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc html.actionlink asp.net-mvc-3

3
推荐指数
1
解决办法
3828
查看次数

MVC 3 - Actionlink - 显示/隐藏注册,如果登录/注销

我如何:1.将注册链接"@ Html.ActionLink("注册","注册")"移动到主页,然后2.根据用户是否登录或注销显示和隐藏它

我看了一会儿这个教程,但我再也找不到了

-Jonny

html.actionlink asp.net-mvc-3

2
推荐指数
1
解决办法
4183
查看次数

将网址写入Razor中的自定义路线

我已声明类似于以下内容的自定义路由:没有“详细信息”操作的ASP.MVC路由

这是我的路线:

routes.MapRoute(
    name: "Profile",
    url: "Profile/{aScreenName}",
    defaults: new { controller = "Profile", action = "Index", aScreenName = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)

我以为这看起来更整洁,但现在我正在努力寻找一种方法来创建指向Razor中这些路线的超链接。问题是我尝试的所有对象都需要一个对象,并自动尝试将其视为完整的查询字符串。我找不到合适的助手来做到这一点。我曾尝试@html@url@href

有人知道最好的方法吗?

parameters url asp.net-mvc html.actionlink razor

2
推荐指数
1
解决办法
4404
查看次数

如何使用Html.ActionLink链接到网站的根目录?

我有这个ActionLink要登录:

@Html.ActionLink("Login", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })
Run Code Online (Sandbox Code Playgroud)

在“主页”视图中,它可以正常工作,并产生以下网址:

http://localhost:12676/Account/Login
Run Code Online (Sandbox Code Playgroud)

但是,当访问另一个区域时,ActionLink结果将在以下URL中显示:

http://localhost:12676/Admin/ManagerAccounts/Login/loginLink
Run Code Online (Sandbox Code Playgroud)

我需要更改以导致ActionLink总是产生~/Account/Login什么?

asp.net-mvc actionlink html.actionlink

2
推荐指数
1
解决办法
5159
查看次数

我无法在控制器中接收ActionLink参数?

我在C#MVC .Net Web项目中工作,我使用带参数的ActionLink,但我无法将其读入Controller.

ActionLink的:

@model IEnumerable<FINAL.Models.Medico>

@foreach (var item in Model) 
{
    @Html.ActionLink("Eliminar", "DeleteMedico", new { id = item.NOMBRE.ToString() })
}
Run Code Online (Sandbox Code Playgroud)

以下是我试图阅读的内容:

public ActionResult DeleteMedico(String elmedico) 
{
    //This WRITE is returning null. :(
    System.Diagnostics.Debug.WriteLine("ELMEDICO:" + elmedico);
    return View();    
}
Run Code Online (Sandbox Code Playgroud)

我是MVC .NET开发的新手,所以我需要你的帮助.

谢谢.

c# asp.net-mvc html.actionlink

2
推荐指数
1
解决办法
56
查看次数

在ASP.NET MVC 3 Razor的JqGrid列中添加ActionLink

我正在使用jqGrid与ASP.NET MVC 3和Razor.

我希望在jqGrid中添加2列以及其余列.

我要添加的列是

  • 编辑
  • 删除

这些列值我想成为ActionLink.

如何将ActionLink添加到JqGrid的列?

请指导我这个.

更新1:在@ user1534482的帮助下我尝试了这个但是没有用

colModel: [
    ...
    { name: 'Open', formatter: 'prepareLinks' },
    ...
],

 function prepareLinks(cellvalue, options, rowObject) {
    return "@Html.ActionLink("Open this","Test")";

}
Run Code Online (Sandbox Code Playgroud)

javascript错误消息:

SyntaxError: missing ; before statement
[Break On This Error]   

return "<a href="/SomeController/Test">Open this</a>";

SomeController (line 92, col 41)
Run Code Online (Sandbox Code Playgroud)

jqgrid html.actionlink asp.net-mvc-3

1
推荐指数
1
解决办法
6183
查看次数

为什么MVC actionlink无法正确呈现?

我传递了这个:

<%: Html.ActionLink("Edit", "EditCRMRequest", "CRM", new { Id = item.Id })%>
Run Code Online (Sandbox Code Playgroud)

我进入浏览器:

http://something.com/CRM/EditCRMRequest?Length=3
Run Code Online (Sandbox Code Playgroud)

与错误代码:

参数字典包含非可空类型'System.Int32'的参数'Id'的空条目,用于'ApricaCRMEvent.Controllers.CRM.CRMController'中的方法'System.Web.Mvc.ActionResult EditCRMRequest(Int32)'.可选参数必须是引用类型,可空类型,或者声明为可选参数.参数名称:参数

如果我在浏览器中明确地写这个,它工作正常:

http://something.com/CRM/EditCRMRequest?Id=3
Run Code Online (Sandbox Code Playgroud)

html asp.net-mvc html-helper html.actionlink

1
推荐指数
1
解决办法
990
查看次数

如何将#id添加到Html.ActionLink

如何生成如下链接<a href="/home/index#item">text</a>:

return RedirectToAction()

@Html.ActionLink()

我需要在页面加载时添加#it​​em for tab.感谢名单.

asp.net-mvc html.actionlink

1
推荐指数
1
解决办法
909
查看次数

在 html 属性设置 disabled = "disabled" 不起作用

@Html.ActionLink(" ", "Edit", new { id = item.UserId }, new { title = "User is not editable" , @class = "edit_btn", disabled = "disabled"})
Run Code Online (Sandbox Code Playgroud)

我想通过设置 html 属性 disabled="disabled" 来禁用 ActionLink,但它不起作用。我能够获得 class 和 title 属性,但 actionLink 没有被禁用。

谁能帮忙..我做错了什么。

asp.net-mvc html.actionlink

1
推荐指数
1
解决办法
4742
查看次数

MVC删除操作链接不起作用

我的Action链接如下所示:

<%= Html.ActionLink("Delete Message", "DeleteMessage", new { messageId=item.MESSAGEID })%>
Run Code Online (Sandbox Code Playgroud)

我的控制器中的Action看起来像这样:

    [AcceptVerbs(HttpVerbs.Delete)]
    public ActionResult DeleteMessage(int messageId)
    {

        Message message = context.Messages.FirstOrDefault(m => m.MESSAGEID.Equals(messageId));
        if (message != null)
        {
            context.Messages.DeleteOnSubmit(message);
            context.SubmitChanges();
        }
        return View();
    }
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,我的模型中的项目仍然没有被删除.我哪里出错了?

asp.net-mvc html.actionlink

0
推荐指数
1
解决办法
940
查看次数

MVC3 ActionLink更改语言并保留相同的参数

我有链接,例如domain.com/de/controler/action?param=value,我希望make actionlink保持相同的链接只需将de更改为en.如果我试图用ViewContext.RouteData.Values ["id"]获取值; 我得到空值.有任何想法吗?

@Html.ActionLink("New Language", 
  ViewContext.RouteData.GetRequiredString("action"),  
  ViewContext.RouteData.GetRequiredString("controller"),
  new { lang = "en" }                            
)
Run Code Online (Sandbox Code Playgroud)

html.actionlink asp.net-mvc-3

0
推荐指数
1
解决办法
1694
查看次数

ActionLink不会为具有两个参数的操作生成正确的路由URL

在视图中

@Html.ActionLink("Edit", "Edit", new { id = 1, year = 1 }) 
Run Code Online (Sandbox Code Playgroud)

在控制器中

// GET: /Forecasts/Edit/5
public ActionResult Edit(int id, short year)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

它生成了一个网址

http://<localhost>/controllername/actionname/1?year=1

我希望actionlink生成一个URL,如: http://<localhost>/controllername/actionname/?id=1&year=1

这个url不能被MVC默认路由解释,为什么URL没有以预期的方式生成?谢谢.

更新:现在我发现这是一个错字引起了我的问题,但下面的答案仍然足够好,因为它帮助我进一步了解路线的工作方式

c# asp.net-mvc html.actionlink razor asp.net-mvc-4

0
推荐指数
2
解决办法
276
查看次数