现在,我正在尝试解决一个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() %>那里似乎已经是一个扩展方法.我可以扩展扩展方法吗?
如何将dropdownlist选择的值称为@html.action路由值.我在我的MVC3剃须刀中使用以下代码.我必须动态调用'eventid'作为dropdownlist选择值.
@Html.Action("FirmPassForum", "Conference", new { eventId = 69 })
Run Code Online (Sandbox Code Playgroud) 我如何:1.将注册链接"@ Html.ActionLink("注册","注册")"移动到主页,然后2.根据用户是否登录或注销显示和隐藏它
我看了一会儿这个教程,但我再也找不到了
-Jonny
我已声明类似于以下内容的自定义路由:没有“详细信息”操作的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。
有人知道最好的方法吗?
我有这个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什么?
我在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开发的新手,所以我需要你的帮助.
谢谢.
我正在使用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) 我传递了这个:
<%: 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) 如何生成如下链接<a href="/home/index#item">text</a>:
return RedirectToAction()
@Html.ActionLink()
我需要在页面加载时添加#item for tab.感谢名单.
@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 没有被禁用。
谁能帮忙..我做错了什么。
我的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)
但由于某种原因,我的模型中的项目仍然没有被删除.我哪里出错了?
我有链接,例如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("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没有以预期的方式生成?谢谢.
更新:现在我发现这是一个错字引起了我的问题,但下面的答案仍然足够好,因为它帮助我进一步了解路线的工作方式
html.actionlink ×13
asp.net-mvc ×10
actionlink ×2
c# ×2
razor ×2
html ×1
html-helper ×1
jqgrid ×1
parameters ×1
url ×1