[英]Razor/Mvc4 web page bad redirection of Html.ActionLink
好吧,我是新来的,我会尽量保持清楚。
我正在用Razor / Mvc4建立论坛,问题是当我尝试使用此功能时:
@Html.ActionLink(@elemento.nombre, "Temas", "Categorias", new { id = @i, onclick =
"javascript:IdCat(this)" })
我不知道为什么,但是当我按下链接时,它会将我重定向到“首页/淡马锡”,我想去Categorias / Tema。
在我的项目中,我有两个控制器,HomeController和CategoriasController,我认为一切正常,但它一直重定向到Home / Temas。
public class CategoriasController : Controller
{
public ActionResult Temas()
{
Session["user_name"] = Session["user_name"];
Session["IDG"] = Session["IDG"];
Session["ID"] = Session["ID"];
Tema tem = new Tema();
List<Tema> temas = new List<Tema>();
temas = tem.ObtenerTemasPorCategoriaID(int.Parse(Session["idCat"].ToString()));
Categoria cat = new Categoria();
ViewBag.NombreCat = cat.obtenerNombreCategoriaById(int.Parse(Session["idCat"].ToString()));
return View();
}
}
希望有人可以提供帮助。 非常感谢。
好吧,其中之一是您的Razor语法不正确。 在@Html.ActionLink()
帮助程序调用中引用变量时,不应包含@
转义前缀:
@Html.ActionLink(elemento.nombre, "Temas", "Categorias", new { id = i, onclick =
"javascript:IdCat(this)" })
@
唯一有效的时间是您是否转义了关键字,例如@class = someClass
。
另外,您应该意识到onclick
调用可能会覆盖您的链接。 onclick
函数将在跟随超链接之前执行。 仅当函数返回true
, 才跟踪链接。如果函数返回false
, 则不跟踪链接!
您使用的Html.ActionLink
的重载是不正确的,原因有两个。
首先,onclick不是RouteValueParameter,实际上应该在Html.ActionLink
的HtmlAttributes部分中。 其次,我认为您实际上正在寻找的重载是(请注意,控制器将被移至Object routevalues参数):
public static MvcHtmlString ActionLink(
this HtmlHelper htmlHelper,
string linkText,
string actionName,
Object routeValues,
Object htmlAttributes
)
综上所述,正确的语法应为:
@Html.ActionLink(elemento.nombre, "Temas", new { controller="Categorias", nid = i}, new {onclick = = "javascript:IdCat(this)" })
如果仍然有问题,我认为您应该考虑检查路由定义,以确保您没有路由错误。 另外,JavaScript也可能会引起问题,并且可能看不到JavaScript代码,这可能很难说。 我在上面看到您正在使用JavaScript设置一个Session变量(这将不起作用,因为一个是客户端,一个是服务器端-而Session完全是服务器端)。 您应该能够在“ Temas” ActionResult中设置会话,而不必使用JavaScript。
此处提供了可用的Html.ActionLink()
重载的完整列表。 编辑
您正在发送ID,但是您的ActionResult方法没有在寻找它。 将控制器中的ActionResult更改为以下内容(请注意,我们已经将您从ActionLink传递的nid添加到了函数的参数中):
public ActionResult Temas(int nid)
{
Session["user_name"] = Session["user_name"];
Session["IDG"] = Session["IDG"];
Session["ID"] = Session["ID"];
Tema tem = new Tema();
List<Tema> temas = new List<Tema>();
temas = tem.ObtenerTemasPorCategoriaID(nid);
Categoria cat = new Categoria();
ViewBag.NombreCat = cat.obtenerNombreCategoriaById(nid);
return View();
}
尝试这个
@Html.ActionLink(@elemento.nombre, "Temas", "Categorias", new { id = @i} ,new{onclick = "javascript:IdCat(this)" })
干杯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.