我是新来的,我会尽力说清楚。
我正在与Razor / Mvc4建立一个论坛,问题是当我尝试使用它时:
@Html.ActionLink(@elemento.nombre, "Temas", "Categorias", new { id = @i, onclick =
"javascript:IdCat(this)" })
我不知道为什么,但当我按下链接时,它会将我重定向到Home / Temas,我想去分类/ 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();
}
}
希望有人可以提供帮助。非常感谢。
答案 0 :(得分:2)
好吧,你的Razor语法不正确。在@
帮助程序调用中引用变量时,不应包含@Html.ActionLink()
转义前缀:
@Html.ActionLink(elemento.nombre, "Temas", "Categorias", new { id = i, onclick =
"javascript:IdCat(this)" })
@
唯一有效的时间是您要转义关键字,例如@class = someClass
。
此外,您应该意识到onclick
电话可能会覆盖您的链接。 onclick
函数将执行 previous 以跟踪超链接。仅当函数返回true
时,才会跟随链接。如果函数返回false
,将不会跟踪链接!
答案 1 :(得分:2)
由于几个原因,您使用的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()
重载的完整列表为available here。
的修改
您正在发送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();
}
答案 2 :(得分:-1)
试试这个
@Html.ActionLink(@elemento.nombre, "Temas", "Categorias", new { id = @i} ,new{onclick = "javascript:IdCat(this)" })
欢呼声